C Funktion längste aufsteigende Teilfolge



  • funktioniert es so?



  • Nein.



  • Swordfish schrieb:

    Nein.

    Ach... die Frage war rein rhetorisch 🙄



  • Ach sorry, ich dachte das kam von becki006.



  • ja konnt ihr mir vllt zeigen wie es dann geht, anstatt einfach nur nein zu sagen? was soll denn das? Dass es nicht funktioniert weiss ich schon selber.. jetzt helft mir doch bitte



  • Swordfish schrieb:

    Nein.

    wie dann? 😕 🙄



  • Mach es mal selber auf einem Zettel und beobachte dich dabei.

    Du stellst fest, dass die Teilfolge zuende ist (steht in laenge).
    Dann musst das Maximum von maxlen und laenge in maxlen ablegen.
    Und laenge wieder auf 1 setzen.



  • DirkB schrieb:

    Mach es mal selber auf einem Zettel und beobachte dich dabei.

    Du stellst fest, dass die Teilfolge zuende ist (steht in laenge).
    Dann musst das Maximum von maxlen und laenge in maxlen ablegen.
    Und laenge wieder auf 1 setzen.

    glaub mir ich bin des jetzt so oft durchgegangen...ich verstehe zwar das Prinzip aber ich versteh einfach nicht an welcher stelle ich a) die maximale Länge in die temporäre variable speicher und b) und diese dann überschreibe. Weil bei meinem Programm wird die temporäre ja ständig ersetzt durch die aktuelle Länge. Ich schwör, könnte ich jemand n Kaffee ausgeben der mir hilft wurd ich des tun 😃



  • letzter Versuch: (was bestimmt auch falsch ist) 🤡

    int langsortiert (int folge[], int Anzahl)
    {
        int laenge, i,b,temp;
        laenge=1;
    
            for(b=0; b< Anzahl;b++)
            {
    
            if(folge[i]<folge[i+1])
            {
                laenge=laenge+1;
            }
            else if (folge[i]>folge[i+1])
            {
                temp=laenge;
                laenge=1;
            }
    
            else if(temp<laenge)
            {
                temp=laenge;
            }
    
            }
    
    return temp;
    }
    


  • int langsortiert (int folge[], int Anzahl)
    {
        int laenge, i,b,temp;
        laenge=1;
    
            for(b=0; b< Anzahl;b++)  // i oder b ?
            {
    
            if(folge[i]<folge[i+1])  // was passier, wenn i Anzahl-1 ist.
            {
                laenge=laenge+1;
            }
            else // hier ist die Folge zuende
                 if (folge[i]>folge[i+1]) // warum dann noch dieser Test? und was ist bei Gleichheit
            {
    
                temp=laenge;  // Das sollte man nur machen, wenn laenge länger ist. 
                laenge=1;
            }
    
            else if(temp<laenge)  // falsche stelle
            {
                temp=laenge;
            }
    
            }
    
    return temp;
    }
    

    Achte auf die Warnungen vom Compiler. Stelle den Warn-Level auf die höchste Stufe.


Anmelden zum Antworten