Arrayeinträge summieren
-
Hallo,
ich habe ein Programm, das folgende Arrayeinträge, die gleich sind summiert und danach quadriert. Also: (3,4,4,5) wäre: 3² + 8² + 5²for(e1 = 0 ;e1 < 50; e1++){ o = 0, erg =0; while ( o < ANZ ) { arrayErg[e1] = 0; zahl = 0; cnt = 1; while (arrayBelegt[e1][o] == arrayBelegt[e1][o + cnt]) cnt++; for (u = o; u < (o + cnt); u++) zahl += arrayBelegt[e1][u]; // printf("\nSumme: %d", zahl); zahl *= zahl; // printf(" zum Quadrat: %d", zahl); erg += zahl; o += cnt; } arrayErg[e1] = erg; }
Was müsste ich ändern, damit ich dieses Prozedere mit dem vorherigen Test, ob das folgende Element gleich ist, und ich nur die jeweiligen Einträge quadriere und aufsummiere, also (3,4,4,5) = 3² + 4² + 4² + 5²
ich habe den Teil mit dem Vergleich herausgenommen, aber so läuft das Programm ewig weiter.
Weiß jemand mehr?
-
Nimm doch mal dein Debugger und geh das Programm nochmals durch...
-
Exakt dasgleiche Problem wurde bereits besprochen:
-
ja, daher habe ich es ja.
ich will ja dieses modifiziert hinbekommen, dass einfach nur die Arrayeinträge jeweils quadriert und zusammengezählt werden. Also eigentlich viel einfacher...
-
Butterbrot24 schrieb:
ich will ja dieses modifiziert hinbekommen, dass einfach nur die Arrayeinträge jeweils quadriert und zusammengezählt werden. Also eigentlich viel einfacher...
Und woran scheiterst du genau?
-
naja,
als ich den vergleich entfernt habe, gibt mir das Programm viel zu große Zahlen aus...for(e1 = 0 ;e1 < 50; e1++){
o = 0, erg =0;
while ( o < ANZ )
{
arrayErg[e1] = 0;
zahl = 0;
cnt = 1;
for (u = o; u < 50; u++)
zahl += arrayBelegt[e1][u];
// printf("\nSumme: %d", zahl);
zahl *= zahl;
// printf(" zum Quadrat: %d", zahl);
erg += zahl;
o += cnt;arrayErg[e1] = erg;
}
printf("Ergebnis: %d\n", arrayErg[e1]);
}
-
naja,
als ich den vergleich entfernt habe, gibt mir das Programm viel zu große Zahlen aus...for(e1 = 0 ;e1 < 50; e1++){ o = 0, erg =0; while ( o < ANZ ) { arrayErg[e1] = 0; zahl = 0; cnt = 1; for (u = o; u < 50; u++) zahl += arrayBelegt[e1][u]; // printf("\nSumme: %d", zahl); zahl *= zahl; // printf(" zum Quadrat: %d", zahl); erg += zahl; o += cnt; arrayErg[e1] = erg; } printf("Ergebnis: %d\n", arrayErg[e1]); }
-
Probierst du nur herum, oder denkst du auch darüber nach? Wenn du auch nachdenkst, beschreib uns bitte kurz deine Überlegungen, dann können wir dir sicherlich weiterhelfen.
-
Du hast (mehrere) funktionierende Varianten serviert bekommen, hast eine funktionierende genommen, daran rumgespielt und wunderst dich jetzt, dass diese Variante nicht mehr funktioniert. Ist schon ziemlich krass.