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 lol1. du verlangst eingaben ( liter ) schoen und gut
ABER immer wieder bis einer 0 eingibt
wenn er 0 eingibt sind die insgesamten liter bei dir 0Also 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 findenWO 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 + literALSO 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 eingibtdie 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 hastdenn punkte sind punkte in einer klausur. bei uebung waer ich aber so frei
und das semicolon klarsorry
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 ? :pmfg JJ
-
jep gesamt initialisieren
und dann wie der vorposter gemeint hatliter ungleich 0 machen
da die abruchbedingung bei 0 exakt liegen muss