goto Schleife?



  • Ok das if nach dem else ist zu viel.
    Ich will ja, dass die while-schleife das querprodukt sich so oft wiederholt, bis es eine einstellige lösung ist.
    wie kann ich denn den befehl schreiben, dass der while befehl nochmal ausgeführt wird?



  • 1.) Querprodukt als Funktion a la: int quer_product(int n) schreiben
    2.) Funktion in einer while-Schleife immer wieder mit der neuen Zahl aufrufen, bis deine Bedingung erfuellt ist.

    Probiere es einfach mal.



  • Woran kannst du denn erkennen, dass du fertig bist?
    (Nimm dein Beispiel von oben)



  • . o O ( goto-schleife.de registrieren geh' ... )



  • Ändert zwar an der Funktion nichts, aber:
    Produkt = Summe 😕 Da sollte man sprechende Bezeichner wählen. 😉



  • Ok das mit dem goto befehl hab ich verworfen..
    Will es jetzt mit einer doppelten while schleife versuchen. Das müsste doch eigentlich klappen oder? So wie ich es habe, passt es aber nicht...

    #include <stdio.h>
    
    int main () {
        int rest, zahl, zwischenprodukt, d;
        zwischenprodukt = 1;
        d = 0;
    
        printf ("Bitte Zahl eingeben: ");
        scanf ("%d", &zahl);
    
        if (zahl == 0)
        {
          zwischenprodukt = 0;
        }
    
        else (zahl != 0);
        while (d >= 10) {
    
        while (zahl) {
    	  rest = zahl % 10;
    	  zwischenprodukt = zwischenprodukt * rest;
    	  zahl = zahl /10;
    	}
        rest = d;
        }
    
        printf ("Das interierte Querprodukt ist: %d\n", zwischenprodukt);
    
    return (0);
    }
    

    Sieht wer den Fehler? Kann man eine doppelte while schleife überhaupt so machen?

    Vielen Dank!



  • Die Variable d wird mit 0 initialisiert und behält diesen Wert bis ans Programmende. Wozu soll die überhaupt gut sein?



  • Hab dann ja am Ende d = rest und in der ersten while steht (d >=10).
    Ich will, dass er so lange die while schleife wiederholt, bis es ein einstelliges Ergebnis hat.
    Aber so wie ich es hier hab geht es jedenfalls nicht.
    Ist denn eine doppelte while schleife überhaupt dafür geeignet? Oder ist das schon der falsche ansatz?



  • TtotheR schrieb:

    Hab dann ja am Ende d = rest

    Nein, du hast rest = d.



  • Dein If-Konstrukt sieht eigentlich wie folgt aus (interessant ab "else"). Ist es das was Du willst?

    if (zahl == 0) 
    {
        ...
    }
    else
    {
        (zahl != 0);
    }
    
    //
    while (...)
        ...
    

    (Tipp 1: Semikolon; Tipp 2: Eine Bedingung nach "else" bewirkt nichts; Tipp 3: Klammerung auch bei nur einem folgenden Statement hilft Anfängern, Fehler zu vermeiden ;))


Anmelden zum Antworten