Index erfordert ein Array oder einen Zeigertypen?
-
int MaxTeilSum2D(int &a, int n, int min) { int max = min; for(int i=0; i<n; i++) { for(int j=i; j<n; j++) { int sum = 0; for(int k=j; k<n; k++) { sum = sum + a[k][j]; if(sum > max) { max = sum; } } } } return max; } int main() { int n, minimum, MaxSum; int folge[4][4] = {-13,25,34,12,-3,7,-87,28,-77,11,1000,-100,26,11,33,-101}; n = sizeof(folge)/sizeof(int); minimum = MinSuche(**folge, n); MaxSum = MaxTeilSum2D(**folge, n, minimum); return 0; }
Hi Leute!
Obiger Code wirft mir in Zeile 13 einen Fehler, dass der Index ein Array oder einen Zeigertypen erfordert. Wo liegt'n da der Fehler? Ich weiß grad nicht, was da falsch sein soll. An die Funktion hab ich mit nem Pointer korrekt das Array übergeben...
-
Ganz einfach: a ist kein Index oder Zeigertyp
. Denn a ist eine Referenz auf einen int. Das kommt davon, wenn man seinen C-Code mit einem C++-Compiler übersetzt, dann haben Fehler im Code nämlich auf einmal richtige syntaktische Bedeutung.
Du meinst wohl
int MaxTeilSum2D(int a[][4], int n, int min)
Der Aufruf gestaltet sich dann natürlich anders. Du hast hier ja anscheinend solange ohne Sinn und Verstand Sterne hinzugefügt, bis es (in C++) zufällig richtig war, ohne dass du eine Ahnung hattest, warum und was das überhaupt bedeutet.
-
*Edit
Sry, habe gerade gemerkt, dass ich etwas komplett falsches geschrieben habe.
-
icarus2 schrieb:
Ich denke die Signatur der Funktion muss
int MaxTeilSum2D(int **a, int n, int min);
lauten und der Aufruf erfolgt dann mit
MaxSum = MaxTeilSum2D(folge, n, minimum);
Ein Array ist kein Zeiger! Probier deinen Code mal aus.
-
Ja, habe ich dann auch (etwas zu spaet) gemerkt. Hatte nicht genau hingeschaut. Sry 'bout that.
-
So wie ich das jetzt verstanden habe, meint ihr wohl so:
int MaxTeilSum2D(int a[][4], int n, int min) { int max = min; for(int i=0; i<n; i++) { for(int j=i; j<n; j++) { int sum = 0; for(int k=j; k<n; k++) { sum = sum + a[k][j]; if(sum > max) { max = sum; } } } } return max; } int main() { int n, minimum, MaxSum; int folge[4][4] = {-13,25,34,12,-3,7,-87,28,-77,11,1000,-100,26,11,33,-101}; n = sizeof(folge)/sizeof(int); minimum = MinSuche(folge, n); MaxSum = MaxTeilSum2D(folge, n, minimum); return 0; }
So geht's nun. Vorab mal danke an euch!