Funktion die Array-Werte zusammen zählt
-
...außerdem ist diese Funktionsdefinition innerhalb der main nicht zulässig. Pack deine Funktion über die main.
-
Nur so für die Zukunft: Nutze die C/C++-Tags statt den Code-Tags. Das dadurch resultierende Syntaxhighlighting hilft bei langen oder komplizierten Codes.
-
Habe die Funktion etwas abgeändert.
Die Größe des Arrays weiß ich jetzt.Wie definiere ich a richtig?
bzw. was wäre ein guter Weg?int durchInt(int b[]) { int summe; int a=int b[]; // Array als Variable zugewiesen for (int i=0; i<5; i++) { summe+=a[i] } return summe; }
-
Hi,
Zeile 5 geht so gar nicht, aber ich weiß auch nicht, was die für einen Zweck hat.
Du kannst in Zeile 9 direkt auf b zugreifen, da fehlt übrigens ein Semikolon.
Und summe solltest Du mit 0 initialisieren, das geschieht in C++ nämlich nicht automatisch.
Außerdem wäre es noch etwas schlauer die Größe der Funktion mitzugeben anstatt diese nur fix einzustellen.
Und schließlich kannst Du eine Funktion nicht innerhalb einer anderen Funktion deklarieren -> int durchInt(int b[]) {...} außerhalb von int main() {...} verschieben.

Man könnte Dir den Code auch direkt schreiben, aber probier's besser selbst anhand der Aussagen hinzubasteln.
-
Potkol schrieb:
int durchInt(int b[]) { int summe; int a=int b[];Wenn schon, dann
= b;. Aberaundbhaben nicht den selbern Datentyp.aist einintundbeinint*. Eigentlich kannst du die Variableaganz weglassen und einfach mitbarbeiten. Zudem solltest du die Grösse der Arrays als Parameter übergeben. Im letzten Code gehst du strikt davon aus, dass dein Array 5 Elemente besitzt. Wenn du jetzt ein Array übergibst, dessen Grösse < 5 ist hast du undefiniertes Verhalten und wenn es > 5 zählst du nicht alle Elemente zusammen.
-
Okey,
Summe mit 0 explizit deklariert.
In Zeile neun hab ich Semikohlon dazu und gleich b verwendet.Ich weiß noch nicht, wie ich die Größe übergebe.
Daher vorerst kein Problem. Das Array ist genau 5 bzw. 4 elemente groß.Habe ich Zeile 1 überhaupt richtig definiert so? War mir net sicher, wie ich ein Array "erwarte".
int durchInt(int b[]) { int summe=0; for (int i=0; i<5; i++) { summe+=b[i] ; } return summe; }
-
Der Code sieht schon besser aus!
Potkol schrieb:
Habe ich Zeile 1 überhaupt richtig definiert so?
Nein, eben das Array (besser gesagt der Pointer) ist schon korrekt aber die Funktion sollte noch einen zweiten Parameter haben. Nämlich die Grösse des Arrays.
-
Und Semikohlon kommt nicht von Halbkohle, sondern von halbem Kolon (Doppelpunkt).
Jetzt reiße Dich von Deinen Fesseln der Unterjochung los und übergebe Deiner Funktion feierlich die Größe des Arrays durch einen zweiten Parameter!

-
Eisflamme schrieb:
Jetzt reiße Dich von Deinen Fesseln der Unterjochung los und übergebe Deiner Funktion feierlich die Größe des Arrays durch einen zweiten Parameter!

Darf ich als besseren Weg zur Weltrevolution vorschlagen, eine Arrayklasse zu erstellen, die sich ihre Größe merkt? Man könnte sie, z.B. vector nennen
.
-
Das ist natürlich noch revolutionärer, vor allem, da es auch noch die beste Lösung ist!
Aber ich glaube, er sollte erstmal hinbekommen, mehr als einen Parameter zu übergeben. Das finde ich zum gegebenen sogar noch etwas wichtiger als vector zu verwenden.