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:

    http://www.c-plusplus.net/forum/276059



  • 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.


Anmelden zum Antworten