Verschachtelte if-Anweisung; Klammernproblem?
-
Hallo,
ich lerne gerade C++ und habe folgende Aufgabenstellung bekommen.
Aufgabe:
Sie erhalten ein Array, das mit ganzen Zahlen gefüllt ist. Ihre Aufgabe ist es Teilsummen von
den im Array enthaltenen Zahlenfolgen zu bilden und diese Summen auszugeben. Die Zahlenfolgen sind durch 0 von einander getrennt.
Erstellen Sie eine C++ Funktion mit folgender Signatur:
void f1(int * array, int length)Ich habe versucht diese Aufgabe mit untestehenden Code zu verwirklichen, jedoch bekomme ich immer diese Fehlermeldungen.
Zeile 24 expected } before else
Zeile 32 expected declaration before "}" tokenIch sitze jetzt schon ziemlich lang und komm einfach nicht drauf.
Kann mir bitte jemand weiterhelfen?
#include <iostream> using namespace std; void f1( int *array, int length ) { int iAnzSum = 0; int iSumme = 0; for( int i=0; i < length; ++i ) //Zählt die Array-Positionen rauf { if( array[i] != 0 ) //Position ist eine Zahl { { if(i == length - 1) { iSumme += array[i]; ++iAnzSum; cout << endl << "Summe Zahlenfolge " << iAnzSum << " = " << iSumme << endl; } else iSumme += array[i]; } else { ++iAnzSum; cout << endl << "Summe Zahlenfolge " << iAnzSum << " = " << iSumme << endl; iSumme = 0; } } } } int main() { int iaZahlen[] ={2, 7, 12, 0, 1, 4, 0, 2, 9, 1, 1}; int *iaZ = iaZahlen; int length = 0; length = sizeof(iaZahlen)/sizeof(int); f1(iaZ, length); return 0; }
Danke!
Lg, Clementis
-
Jup, da waren einfach zwei geschwungene Klammern zu viel in deiner Funktion. So sollte es passen:
void f1( int *array, int length ) { int iAnzSum = 0; int iSumme = 0; for( int i=0; i < length; ++i ) //Zählt die Array-Positionen rauf { if( array[i] != 0 ) //Position ist eine Zahl { if(i == length - 1) { iSumme += array[i]; ++iAnzSum; cout << endl << "Summe Zahlenfolge " << iAnzSum << " = " << iSumme << endl; } else iSumme += array[i]; } else { ++iAnzSum; cout << endl << "Summe Zahlenfolge " << iAnzSum << " = " << iSumme << endl; iSumme = 0; } } }
Wie du siehst habe ich die Klammern mal in Anlehnung an deinem Codestil eingerückt, damit du besser siehst welche der öffnenden und schließenden Klammern zusammengehören :).
Edit: Noch zusätzlich ein paar Zeilen eingerückt die ich übersehen hatte ;).
-
Super, danke Mizar!
Danke für deine rasche Antwort!!
Das Prgramm läuft!
lg, Clementis
-
Sag mal bitte, was genau deine Funktion machen soll - die sieht etwas sehr verworren aus - da könnte man 100%ig noch einiges anders schreiben - so, dass man es besser lesen kann und es auch sehr viel übersichtlicher wird ^^
bb
-
Öh.
Jo, das geht wesentlich einfacher:void f1(int *array, size_t length) { int iAnzSum = 0; int iSumme = 0; // summen der durch nullen getrennten zahlen-folgen ausrechnen for (size_t i = 0; i < length; ++i) { iSumme += array[i]; if (array[i] == 0 || i == (length - 1)) // null gefunden oder letztes element { ++iAnzSum; cout << endl << "Summe Zahlenfolge " << iAnzSum << " = " << iSumme << endl; iSumme = 0; } } }