Programm funktioniert nicht
-
Hallo erstmal,
ich bin ein c Neuling also seid nicht so streng ; )
Ich will quadratzahlen herausfinden doch irgendwas funktioniert nicht un da bitte ich euch um Hilfe, denn ich bekomme es einfach nicht hin u. Hier ist der Code:
Liebe grüße!void calcQuadrat(int a[]) { int i; int x = sqrt(a[i]); int j; int sum = 1; int cnt = 1; for(i = 0; i < SIZE; i++) { for(j = 0; j <= x - 1; j++) { sum = cnt + 2; if(sum == a[i]) { printf("%d ist eine Quadrat Zahl ", a[i]); } else { printf("%d ist keine Quadrat Zahl ", a[i]); } } } }
-
„Funktioniert nicht“ ist keine Fehlerbeschreibung.
-
Dir fehlt die Funktion main
-
Dieser Beitrag wurde gelöscht!
-
„Funktioniert nicht“ ist keine Fehlerbeschreibung.
Wenn es eine Quadratzahl ist gibt es trotzdem nur "die Zahl ist keine Quadratzahl aus" und ich komme auf den Fehler nicht drauf
-
Da stimmt einiges nicht:
- Was soll
int i; int x = sqrt(a[i]);
deiner Meinung nach machen?
i
ist uninitialisiert und du greifst daher beia[i]
auf irgendeinen Speicher zu => "undefined behaviour" (UB).
2. Die Variablecnt
änderst du nie, d.h. die Zuweisungsum = cnt + 2
ergibt bisher immer3
(und damit wird bisher [fälschlicherweise] nur diese Zahl als Quadratzahl angesehen)!
3. Die innerefor
-Schleife ergibt auch keinen Sinn, da du nirgendsj
benutzt.
4. ...Beschreibe mal, was du genau machen möchtest (d.h. nach welcher Formel möchtest du ermitteln, ob eine der Zahlen in dem Array
a
eine Quadratzahl ist)?PS: Die Größe des Arrays solltest du als weiteren Funktionsparameter übergeben, anstatt als festes Makro
SIZE
.
-
Da stimmt einiges nicht:
- Was soll
int i; int x = sqrt(a[i]);
deiner Meinung nach machen?
i
ist uninitialisiert und du greifst daher beia[i]
auf irgendeinen Speicher zu => "undefined behaviour" (UB).
2. Die Variablecnt
änderst du nie, d.h. die Zuweisungsum = cnt +2
ergibt bisher immer3
!Beschreibe mal, was du genau machen möchtest (d.h. nach welcher Formel möchtest du ermitteln, ob eine der Zahlen in dem Array
a
eine Quadratzahl ist)?PS: Die Größe des Arrays solltest du als weiteren Funktionsparameter übergeben, anstatt als festes Makro
SIZE
.ich habe a[] mit zuffälligen Werten initialisiert und will das zb a[i] 16 ist das erstmal die Wurzel ausgerechnet wird also 4 und dann soll es 1 + 3 + 5 + 7 addieren und wenn das a[i] also 16 ist ist es eine Quadratzahl also es soll so oft ungerade Zahlen addieren wie die Wurzel der Zahl ist. Ich hoffe es ist verständlich.
LG
-
Dieser Beitrag wurde gelöscht!
-
OK, du willst also nach Formeln zum Generieren von Quadratzahlen diese ermitteln.
Am besten du schreibst dir dann eine Funktion, welche für eine Zahl überprüft, ob diese eine Quadratzahl ist - und diese Funktion rufst du dann in einer Schleife für alle Werte des Arrays
a
auf (dann sollte dir klar(er) werden, was bisher an deinem Code logisch falsch ist).
-
@Th69 also 1 weiß ich, dass int x = sqrt(a[i]) in die Schleife gehört, aber mehr dann auch nicht...
-
@Th69 Das Problem ist halt auch, dass icht nicht gut bin im programmieren ich tue micht bei den Lösungswegen trotz Bemühungen einfach sehr schwer.
-
Wenn du schon
sqrt
benutzt, dann könntest du auch einfachint x = sqrt(a[i]); if (x * x == a[i]) printf("%d ist eine Quadratzahl\n", a[i]); else printf("%d ist keine Quadratzahl\n", a[i]);
berechnen.
Wenn das jedoch eine Übungsaufgabe sein soll, dann sollte diese auch ohnesqrt
auskommen...Und daher auch mein Rat, mit Aufteilen der Gesamtaufgabe in kleinere, überschaubare Funktionen.
-
@Th69 Das hab ich e schon gemacht, aber ich wollte es mal so probieren aber anscheinend ohne Erfolg.
-
@Anfänger1 sagte in Programm funktioniert nicht:
void calcQuadrat(int a[])
{
int i;
int x = sqrt(a[i]);Welchen Wert hat i zu dem Zeitpunkt, wo du damit den Zeiger a dereferenzierst?
-
@Wutz Habe es schon geschafft danke waren sehr dumme Fehler dabei.