2-dimeonsionales Array - maximale Spaltensumme



  • 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

    1. entweder diese Zahlen ignorieren (nicht aufsummieren)
    2. 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?


  • Mod

    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 😉



  • SeppJ schrieb:

    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! 🙂

    Wer kam den auf die Überlegung, was denn passieren würde, wenn die Zahlen negativ wären?
    Ich nicht 😉
    Kann geschlossen werden, danke 🙂



  • iN3verM1nd schrieb:

    Wer kam den auf die Überlegung, was denn passieren würde, wenn die Zahlen negativ wären?

    Hast doch selber double als Typ im Array angegeben. Da spricht nix dagegen, daß negative Zahlen drin sind, oder?

    Ok, dein Code ist schon echt gut. Für eine Abgabe beim Prof fertig. Trotzdem hat er diese kleine Lücke. Kannste den Code auch noch als freiwillige Zusatzaufgabe so weit verbessern, daß er klappt, wenn alle Zeilensummen negativ sind? Also die größte der negativen Summen finden?

    summe1 und summe2 sehen so total ähnlich aus.

    Sind sie aber nicht. Eine Summe initialisiert man mit 0. Das ist logisch.

    Einen Maximalwert inistialisiert man mit dem kleinstmöglichen Wert. Oder wenn der nicht verfügbar ist, mit dem ersten Messwert.


Anmelden zum Antworten