2-dimeonsionales Array - maximale Spaltensumme
-
SeppJ schrieb:
Magst du dir nicht wenigstens mal Gedanken darüber machen, wie man es so umsetzen könnte, dass das Programm bei negativen Zahlen keinen Unsinn macht? Man braucht auch bei Hausaufgaben schließlich nicht immer nur die Minimalforderung abliefern. Soger gerade bei Hausaufgaben kannst du doch rumprobieren! Später, wenn du mal wirklich das Minimum/Maximum von beliebigen Mengen suchen musst, dann weißt du schon gleich, was gute und schlechte Ideen sind.
Wenn eine negative Zahl zu einer positiven addiert wird, dann wird subtrahiert.
(5)+(-3) = 5-3 = 2Meinst du etwa damit, dass ich negative Zahlen statt addieren subtrahieren soll?
(5)-(-3) = 5+3 = 8
-
...
-
Was passiert wenn die Summe kleiner Null wird weil negative Zahlen in der Spalte vorkommen.
-
DirkB schrieb:
Was passiert wenn die Summe kleiner Null wird weil negative Zahlen in der Spalte vorkommen.
Dann ist es doch trotzdem die "Summe".
Eben die "Summe" aus den negativen und positiven Zahlen.
-
Was ist das Maximum von -12, -15, -3 ?
Und schau mal was der Startwert in deiner Funktion ist.
-
DirkB schrieb:
Was ist das Maximum von -12, -15, -3 ?
Und schau mal was der Startwert in deiner Funktion ist.
Okay, ich verstehe was du meinst.
Dann muss ich- entweder diese Zahlen ignorieren (nicht aufsummieren)
- oder diese Zahlen mit (-1) multiplizieren
Stimmts?
-
...
-
Swordfish schrieb:
Njet. Spiel doch deinen Code mit negativen Zahlen mit Bleistift und Zettel durch ...
if(spaltenSumme > *max)
Ah, das ist das Problem...
-
Oder ändere den Code mal testweise um, das nur negative Werte vorkommen und lass dir das Maximum ausgeben.
Was ist denn nun das Maximum von den Zahlen?
-
DirkB schrieb:
Oder ändere den Code mal testweise um, das nur negative Werte vorkommen und lass dir das Maximum ausgeben.
Was ist denn nun das Maximum von den Zahlen?
Habs schon verstanden - 0
-
iN3verM1nd schrieb:
if(spaltenSumme > *max)
Ah, das ist das Problem...
Nein.
Das Problem ist dein Anfangswert für das Maximum
summe2 = 0;
-
DirkB schrieb:
Was passiert wenn die Summe kleiner Null wird weil negative Zahlen in der Spalte vorkommen.
Das ist der "falsche", alte Code.
void maxSpaltenSumme(double feld[][MAX], size_t z, size_t s, double *max, int *index) { int i,j; double spaltenSumme = 0; for(i = 0; i < s; i++) { for(j = 0; j < z; j++) { spaltenSumme += feld[j][i]; } if(spaltenSumme > *max) { *max = spaltenSumme; *index = i; } spaltenSumme = 0; } }
-
Ok, damit verlagerst du das Problem nach draußen.
Mit Welchem Wert für max gehst du denn in die Funktion?
-
DirkB schrieb:
Ok, damit verlagerst du das Problem nach draußen.
Mit Welchem Wert für max gehst du denn in die Funktion?Mit 0.
Spaltenindex ebenfalls 0
Das Feld wurde anfangs mit Zufallszahlen von 30 - 299.99 gefüllt.
-
Mit welchem Wert für max gehst du dann in die Funktion, wenn auch negative Werte erlaubt sind?
Was ist das Maximum von -12, -15, 0, -3 ?
-
DirkB schrieb:
Mit welchem Wert für max gehst du dann in die Funktion**, wenn auch negative Werte erlaubt sind?**
Ich komm nicht drauf, verdammt noch mal. Belaste mein 16-jähriges Gehirn nicht unnötig...
DirkB schrieb:
Was ist das Maximum von -12, -15, 0, -3 ?
0
-
0 ist aber dein Initialisierungswert.
Du wirst bei nur negativen Werten nichts anderes finden. Und der index ist dann auch falsch.
-
DirkB schrieb:
0 ist aber dein Initialisierungswert.
Du wirst bei nur negativen Werten nichts anderes finden. Und der index ist dann auch falsch.Soll heißen dass mein Programm mit negativen Worten nicht funktioniert würde?
-
iN3verM1nd schrieb:
Soll heißen dass mein Programm mit negativen Worten nicht funktioniert würde?
Ja! Deswegen winken wir doch seit drei Seiten mit dem Zaunpfahl!
-
SeppJ schrieb:
Deswegen winken wir doch seit drei Seiten mit dem Zaunpfahl!
... aber aus Beton