Do while Übung problem.. :(



  • Hallo !
    Also ich habe hier folgende Übung. Ein Programm soll etwas solange addieren bis man 0 eintippt und danach soll eine zweite zahl eingegeben werden, diese aber nur normal einmal. Danach soll das Programm das erste Ergebnis * 100 / das zweite machen und das dann ausgeben.
    Ich habe noch nie etwas mit Schleifen gemacht deshalb habe ich mir nen Tutorial geholt werde daraus aber nicht schlau..

    Hier das was ich gemacht habe:

    // Durchschnittlicher Spritverbrauch
    
    #include <conio.h>
    #include <iostream.h>
    #include <iomanip.h>
    
    int main()
    
    {
    
        double kilometer, liter, durchschnitt;
        do 
    
    cout <<"Geben sie die Liter ein: ";
    cin  >>liter;
    
        while (liter>0)
        liter=liter+liter;
    
    return 0;
    getch();
    }
    

    Danke für Hilfe



  • Du hast keine Frage gestellt, deshalb ein paar allgemeine Tips:

    - Du musst den Schleifenkörper in geschweifte Klammern setzen, wenn er mehr als eine Anweisung umfasst.

    - Du kannst nicht dieselbe Variable für die Eingabe und zum Aufsummieren benutzen.

    - iostream.h ist veraltet.



  • Oh hab ich vergessen stimmt...
    Wie kann ich mein Problem lösen ???
    Ich bekomme nur Fehler...
    Ich habe das anhand des Beispiels was ich habe einfach nicht verstanden. 😞



  • also ich würde an deiner stelle
    die vorhigen übungen nochmal machen ALLE!
    wenn es keine vorigen gab und das die erste ist, dann lol

    1. du verlangst eingaben ( liter ) schoen und gut
    ABER immer wieder bis einer 0 eingibt
    wenn er 0 eingibt sind die insgesamten liter bei dir 0

    Also vom prinzip

    1. do while machen und die liter einlesen und addieren!!! in eine andere variable namens ( als bsp ) gesamtliter UND das solange bis 0 eingeben wird

    dann hast du die insgesamten liter in "gesamtliter" stehen

    dann machst du noch einmal die "abfrage" zum einlesen

    2. google ist dein freund 😉
    google mal nach do while dann wirst du fogendes finden

    WO du auch klammern brauchst

    do
    {                            // hier schweifklammer
    
    // ja ich google
    
    }while( !nichtgefunden )    // hier ne schweifklammer  und die abruchbedingung
    

    die abruchbedingung ist bei dir am besten

    while( liter < 1 )

    d.h. wenn einer ne 0 eingibt oder eine negative zahl, dann wird abgebrochen

    in der schleife ( nach dem do )

    musst du

    a) text ausgeben wo er liter eingeben soll
    b) cin // die abfrage
    c) gesamtliter = gesamtliter + liter

    ALSO bin mal gespannt was du davon machst

    nach dem do while
    nochmal die abfrage ein einziges mal. kann man anders lösen aber so checks du es besser 😉



  • newkid schrieb:

    die abruchbedingung ist bei dir am besten

    while( liter < 1 )

    Anders herum:

    while(liter > 0);
    

    PS: An das Semikolon hinter der schließenden Klammer denken!



  • Ich schätze das hast du gemeint:

    do
    {
    
    //hier steht dein code
    
    }
    while(eingabe!='0')
    


  • jep natuerlich meine ich
    liter groeser als 0 lol
    aber muss man auch so sehen wenn man eingibt

    die aufgabenstellung ist nicht so der hit. ich finde es besser wenn man 0 liter oder negative liter "tank". naja
    aber natuürlich bei der pruefung haette ich abgebrochen bei GENAU 0
    wie du es gemacht hast 😉 denn punkte sind punkte in einer klausur. bei uebung waer ich aber so frei
    und das semicolon klar 🙂 sorry

    Aber jetzt will ich mal das zwischenergebnis von AlternativEnde. also den code den er jetzt nach den tips hat.



  • So bin fertig...
    Bewertet bitte mal...

    // Durchschnittlicher Spritverbrauch 
    
    #include <conio.h> 
    #include <iomanip.h> 
    #include <stdio.h>
    
    int main() 
    {  
    
        double kilometer, liter, durchschnitt, gesamtliter; 
    
    cout << "Dies ist ein Programm zur Ermittlung, des durschnittlichen Spritverbrauches. \n";
    cout << "Geben sie die Anzahl der getankten Liter an und brechen sie mit 0 ab \n \n \n";
    
    // Do While Schleife 
    
        do
        { 
    
        cout <<"Bitte die Anzahl der getankten Liter eingeben: "; 
        cin  >>liter; 
        gesamtliter = gesamtliter + liter;
    
        }
        while(liter > 0); 
    
    cout <<"Bitte geben sie die gefahrene Kilometerzahl ein: ";
    cin  >>kilometer;
    durchschnitt = gesamtliter * 100 / kilometer;
    cout <<"\n \n Der Durchschnittsverbrauch auf 100 Kilometer betraegt: "<< setprecision(2)<< fixed << durchschnitt <<" Liter. ";
    cout <<endl<<"\n Sie haben insgesamt: " << setprecision(2)<< fixed << gesamtliter <<" Liter getankt. ";
    
    getch(); 
    return 0; 
    }
    


  • Wie wärs denn mal mit einer Initialisierung deiner Variablen. 😃
    Welchen Wert hat denn z.B. gesamtliter bei seiner ersten Verwendung ? :p

    mfg JJ



  • jep gesamt initialisieren
    und dann wie der vorposter gemeint hat

    liter ungleich 0 machen
    da die abruchbedingung bei 0 exakt liegen muss


Anmelden zum Antworten