bigpoint Geschrieben 16. Oktober 2002 Geschrieben 16. Oktober 2002 Hallo, wo ist Fehler: out<<"Wollen Sie jetz die Daten öffnen ?"<<endl; cout<<"mit 1 ja"<<endl; cout<<"mit 0 nein"<<endl; cin>>janein; while((janein == 0) && (janein == 1) ){ if(janein=1){ cout<<"Die Zahl ist 1 "<<endl; } if(janein=0){ cout<<"Die Zahl ist 0"<<endl; } } cout<<"Sie haben falsche Zahl eingegeben"<<endl; Egal welche Zahl ich angebe komme ich nicht rein ???? Zitieren
HELLmut Geschrieben 16. Oktober 2002 Geschrieben 16. Oktober 2002 Original geschrieben von 007ski while((janein == 0) && (janein == 1) ) dieser fall tritt nie ein, da janein nicht 0 UND 1 sein kann. Wahrscheinlich meinst du "logisch oder", bzw. " || " . achja die klammern sind auch nicht nötig, es könnte also while(janein == 0 || janein == 1 ) heißen. Zitieren
Citrus-Motte Geschrieben 16. Oktober 2002 Geschrieben 16. Oktober 2002 Außerdem weist Du in der If-Anweisung janein den Wert 1 bzw 0 zu statt zu vergleichen besser: if(janein==1) { cout<<"Die Zahl ist 1 "<<endl; } if(janein==0) { cout<<"Die Zahl ist 0"<<endl; } oder kürzer: if(janein==1) cout<<"Die Zahl ist 1 "<<endl; else cout<<"Die Zahl ist 0"<<endl;, denn es kann dann ja nur 1 oder 0 sein. Zitieren
bigpoint Geschrieben 16. Oktober 2002 Autor Geschrieben 16. Oktober 2002 Und was ist wenn der User tippt 6 ?? Wenn ich möchte den User nur auf drei angaben begrenzen ? So kriege ich Fehler: do{ if(janein=1){ cout<<"Die Zahl ist 1 "<<endl; } if(janein=0){ cout<<"Die Zahl ist 0"<<endl; } }while(((janein == 0 )|| (janein == 1))<4 ); Zitieren
Citrus-Motte Geschrieben 16. Oktober 2002 Geschrieben 16. Oktober 2002 Versuchs mit: do { if(janein==1) { cout<<"Die Zahl ist 1 "<<endl; } if(janein==0) { cout<<"Die Zahl ist 0"<<endl; } }while( janein>=0 && janein<=3 ); Zitieren
HELLmut Geschrieben 16. Oktober 2002 Geschrieben 16. Oktober 2002 Original geschrieben von 007ski Und was ist wenn der User tippt 6 ?? Wenn ich möchte den User nur auf drei angaben begrenzen ? So kriege ich Fehler: do{ if(janein=1){ cout<<"Die Zahl ist 1 "<<endl; } if(janein=0){ cout<<"Die Zahl ist 0"<<endl; } }while(((janein == 0 )|| (janein == 1))<4 ); Zum einen ist es wieder so, das du in den if-Abfragen janein 1 bzw. 0 zuweist, dass muss wie schon erwähnt wurde "==" sein. dann ist die zeile while(((janein == 0 )|| (janein == 1))<4 ); nicht in Ordnung. Denn eine Bedingung wie " ((janein == 0 )|| (janein == 1)) " kann nur wahr oder falsch sein, nicht aber kleiner vier. hier wäre wohl while((janein == 0 || janein == 1) && janein < 4); richtig. Zitieren
Klotzkopp Geschrieben 16. Oktober 2002 Geschrieben 16. Oktober 2002 Ich möchte noch anmerken, dass das eine Endlosschleife ist, da janein innerhalb des Schleifenkörpers nicht geändert wird. Zumindest die cin-Anweisung sollte also mit in die Schleife. Zu dem Problem, das Du bekommen wirst, wenn der Benutzer ein nichtnumerisches Zeichen eingibt, siehe: http://fachinformatiker-world.de/forums/showthread.php?s=&threadid=32336&werbeid=29 Zitieren
bigpoint Geschrieben 17. Oktober 2002 Autor Geschrieben 17. Oktober 2002 Danke sub7 und Citrus-Motte, Ihr versuch ist aber nicht ganz richtig. Wenn ich eine andere Zahl als 1 oder 0 eingebe dann der progi merkt das zwar, aber beendet auch das Programm und ich wollte den Benutzer drei versuche erlauben dh. Nach erst nach drei falschen versuchen das progi beenden Zitieren
DBO Geschrieben 17. Oktober 2002 Geschrieben 17. Oktober 2002 Original geschrieben von 007ski Danke sub7 und Citrus-Motte, Ihr versuch ist aber nicht ganz richtig. Wenn ich eine andere Zahl als 1 oder 0 eingebe dann der progi merkt das zwar, aber beendet auch das Programm und ich wollte den Benutzer drei versuche erlauben dh. Nach erst nach drei falschen versuchen das progi beenden Dazu bräuchtest du dann einen Zähler der die Fehleversuche zählt.. das müsste ungefähr so aussehen.... int iFehlZahl = 0; . . . do { cin>>janein; if(janein==1) { iFehlZahl = 0; cout<<"Die Zahl ist 1 "<<endl; } else { if(janein==0) { iFehlZahl = 0; cout<<"Die Zahl ist 0"<<endl; } else iFehlZahl++; } }while( janein == 0 || janein == 1 || iFehlZahl == 3); [/PHP] so müssts funzen... Zitieren
HELLmut Geschrieben 17. Oktober 2002 Geschrieben 17. Oktober 2002 int falschezahl=0; do { if(janein==1) { cout<<"Die Zahl ist 1 "<<endl; } if(janein==0) { cout<<"Die Zahl ist 0"<<endl; } if(janein!=0 && janein!=1) { i++; } }while(falschezahl < 4); dann vielleicht so? wenn du die anzahl der falschen eingaben einbeziehen willst, musst du die auch zählen, oder versteh ich dich jetzt ganz falsch? EDIT: zu langsam Zitieren
Citrus-Motte Geschrieben 17. Oktober 2002 Geschrieben 17. Oktober 2002 Hallo, bei der Version von sub7 ist noch eine 4. falsche Eingabe möglich bevor abgebrochen wird, außerdem kommt man immernoch in die Endlosschleife. Ich schlage außerdem vor den Fehlerzähler bei einer richtigen Eingabe wieder zurückzusetzen: int falschezahl=1, janein; cout<<"Wollen Sie jetz die Daten öffnen ?"<<endl; cout<<"mit 1 ja"<<endl; cout<<"mit 0 nein"<<endl; do { cin>>janein; if(janein==1) { cout<<"Die Zahl ist 1 "<<endl; falschezahl=1; } else if(janein==0) { cout<<"Die Zahl ist 0"<<endl; falschezahl=1; } else { falschezahl++; cout<<"Sie haben falsche Zahl eingegeben"<<endl; } }while(falschezahl < 4); Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.