Veröffentlicht 16. Oktober 200222 j 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 ????
16. Oktober 200222 j 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.
16. Oktober 200222 j 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.
16. Oktober 200222 j Autor 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 );
16. Oktober 200222 j 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 );
16. Oktober 200222 j 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.
16. Oktober 200222 j 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
17. Oktober 200222 j Autor 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
17. Oktober 200222 j 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...
17. Oktober 200222 j 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
17. Oktober 200222 j 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);
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.