2-dimeonsionales Array - maximale Spaltensumme
-
iN3verM1nd schrieb:
Also sind in einer Zeile die Elemente von feld[0 bis (n-1)][0] aufgelistet.
Fein, dann passt deine Definition von Zeilen und Spalten. Was funktioniert nun nicht? Hast du die bereits genannten Fehler beseitigt? In deinem neuen Quellcode sind sie noch drin.
Es spielt ebenfalls keine Rolle, ob die Zahlen positiv oder negativ sind(Zufallszahlen von 30.00 - 299.99)
Diese Anforderung steht für alle Zeiten in Stein gemeißelt, wird sich niemals ändern und die Funktion wird auch niemals von jemand anderem (der dem Namen der Funktion nach ein korrektes Verhalten auch für negative Zahlen erwarten könnte, schließlich heißt sie nicht maxSpaltenSummeAberNurFuerPositiveZahlen) benutzt werden?
Falls ja: Du hast aber ein unglaubliches Vertrauen in die Zukunft und deine Mitmenschen.
-
SeppJ schrieb:
iN3verM1nd schrieb:
Also sind in einer Zeile die Elemente von feld[0 bis (n-1)][0] aufgelistet.
Fein, dann passt deine Definition von Zeilen und Spalten.
Ich habe meinen "Fehler" gefunden. Das Problem war, dass in der Ausgabe alle Elemente von feld[0][0] bis feld[0][n-1] nebeneinander waren - Somit habe ich die Spaltensumme der Felder richtig berechnet.
Da aber die Summe der Spalten in der Ausgabe gefragt war, wurde die "richtige" größte Spaltensumme des Feldes der Ausgabe demnach zur Zeilensumme...
Es spielt ebenfalls keine Rolle, ob die Zahlen positiv oder negativ sind(Zufallszahlen von 30.00 - 299.99)
Diese Anforderung steht für alle Zeiten in Stein gemeißelt, wird sich niemals ändern und die Funktion wird auch niemals von jemand anderem (der dem Namen der Funktion nach ein korrektes Verhalten auch für negative Zahlen erwarten könnte, schließlich heißt sie nicht maxSpaltenSummeAberNurFuerPositiveZahlen) benutzt werden?
Falls ja: Du hast aber ein unglaubliches Vertrauen in die Zukunft und deine Mitmenschen.Es spielt wirklich keine Rolle, da es sich hier um ein Hausübungs-Beispiel von unserem Lehrer handelt und der nur die Spaltensumme sehen will
Aber danke dir für deine Hilfe
-
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.
-
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.