Zum Inhalt springen

while


bigpoint

Empfohlene Beiträge

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 ????

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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...

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 :(

Link zu diesem Kommentar
Auf anderen Seiten teilen

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);

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...