[GELÖST] for schleife in while schleife und wieder zurück ?!



  • Hey ihr,

    meine aufgabe:
    While schleife schreiben und for schleife schreiben...
    Meine While Schleife :

    #include <iostream>
    using namespace std;
    
    int main (){
    	     int i = 150;
    	     while (i >=0) {
    	    	      cout << i << endl;
    	    	      i -=30;
    	     }
    
    }
    

    Ich glaub die while Schleife ist so eigentlich richtig..
    Nun soll ich da eine for- Schleife daraus basteln...
    Ich habe absolut keine Ahnung wie das gehen soll.....

    Über Hilfe wie immer dankbar...

    MFG

    faC1al



  • Startwert von i ist gleich was?
    Bei jedem Durchgang nimmt i um welchen Betrag ab?
    Wie zu welchem Wert von i läuft die while schleife?



  • Naja, der startwert von i ist hier 150 und soll dann denk ich mal auch so bleiben...
    Solange i > 0 ist wird die Schleife ausgeführt...
    i wird jedes mal dabei um 30 kleiner...
    Bis die Bedingung nichtmehr erfüllt wird...
    Aber wie soll das mit einer for -Schleife gehen ?



  • Was sind denn die 3 Angaben, die im Kopf einer for-Schleife stehen?



  • for (<startwert>; <bedingung>; <befehl nach ausführung>)
    {
        // ...
    }
    


  • for( initialisierung; bedingung; inkrement)

    also z.b for (i=0; i<5 ; i++)



  • faC1al schrieb:

    for( initialisierung; bedingung; inkrement)

    Nicht inkrement, sondern ein beliebiger Ausdruck. Also z. B. auch

    for(int i = 0; i < 100; i += 10)
    


  • mhh also vllt in meinem fall so:

    int i = 150;
    
    for (i = 150; i >0 ; i-=30) cout <<i << endl;
    

    Kommt mir aber recht spanisch vor 😉



  • for (int i = 150; i >0 ; i-=30)
    

    So wäre es wohl üblicher. Aber so ist es richtig. Warum testet du es nicht einfach? 😉

    Gruß


  • Mod

    faC1al schrieb:

    for( initialisierung; bedingung; inkrement)

    initialisierung;
    while (bedingung)
    {
      // ...
    
      inkrement;
    }
    

    edit: Oh, es war genau das umgekehrt gefragt 😃 . Ich sollte die ersten Beiträge aufmerksamer lesen anstatt bloß die Überschrift und den letzten Beitrag



  • Wollte es testen und habe mal den rest hinzugeschrieben:

    #include <iostream>
    using namespace std;
    
    int main (){
    	     int i = 150;
    	     for (i = 150 ; i > 0 ; i -=30)
    	    	      cout << i << endl;
    
    	     }
    
    return 0;
    }
    

    Nun bekomm ich einen synthax Fehler bei "return 0;"..
    P.S ich initialisiere immer alles vorher, weil es so immer in meinem c++ Buch steht 😉


  • Mod

    Deine Klammern passen nicht. Von deiner Einrückung her zu urteilen willst du nach for eine Klammer öffnen, tust du aber nicht.

    edit: Ein Editor mit automatischer Einrückung und Klammerhervorhebung würde da gute Dienste leisten.



  • Oha, stimmt....
    Super mal wieder vielen Dank an allen beteiligten... 😉

    Ich fasse nochmal zusammen wie man das Problem am besten löst:

    Erst anschauen wie die Schleife funktioniert, die man gerade vor sich hat( Was passiert mit dem Startwert, wann terminiert die Schleife etc..).
    Danach vergleichen mit den Eigenschaften in die man sie umwandeln will und einfach einsetzten 😉



  • Wobei...

    int i = 150;
    while (i >=0)
    {
    	cout << i << endl;
    	i -=30;
    }
    

    und

    for (int i = 150 ; i > 0 ; i -=30)
    {
    	cout << i << endl;
    }
    

    ...nicht zur gleichen Ausgabe führen wird (>= 0). Im Grunde genommen muss es als falsch angesehen werden.


Anmelden zum Antworten