2qrum macht er nichts mehr

zorro2711

Grünschnabel
Guten Morgen und einen schönen 4. advend.

Ich habe ein Menü wo ich verschieden knotenpunkte habe und in einem knotenpunkt ist ein punkt wo ich mein name eingeben kann.
den name kann ich eingeben.
dann fragt er mich ab es auch mein name ist. (wegen tippfehler uns so )
und ich soll 'j' oder 'n' eingeben.
wen ich 'j' soll ich wieder zurück ins menü, was ja klappt.
und wenn ich 'n' eingebe soll er wieder die schleife ausfühen, so das ich den name noch mal eingeben kann.

so nun der fehler:
name eingebn
er stimmt nicht
ich gebe 'n' ein
und erbleibt einfach stehn ohne das ich was eingeben kann.
Code:
void name2 () 
{ 
     char ch=0; 

    do 
    { 

    while (ch == 'n' || ch == 'N')     { 

    cout<<"Wie lautet dein Name?"; 
    cin.get (noname,30); 
    cout<<"ist dein name "<<noname<< " ?  \n <J>a oder <N>nein"<<endl; 
      
    cin.get(ch); 
cin.get(ch); // damit die eingabe forderung umgangen wird (\n oder endl) 
    cin.clear(); 
    } 
    


    }while (ch != 'j' && ch != 'J'); 



}
und ich habe jetzt wirklich lange experimentiert und versucht aber es kommt ja KEINE fehlermeldung und/oder wahrnmeldung so das ich nicht weiß was ich falsch gemacht habe
also meine frage was ab ich da falsch gemacht oder was kann ich ändern
 
Hey und schönen 4.Advent ;)

Ehm...ich finde, dass das ein bisschen zu doppel gemoppelt ist :D
Schreib es einfach so wie folgt anstatt mit der weiteren inneren while-Schleife:

C++:
void name2 () 
{ 
     char ch=0; 
 
    do 
    { 

    cout<<"Wie lautet dein Name?"; 
    cin.get (noname,30); 
    cout<<"ist dein name "<<noname<< " ?  \n <J>a oder <N>nein"<<endl; 
      
    cin.get(ch);   
    cin.clear();
   
    }while (ch != 'j' && ch != 'J');  

 
 
 
}

Ich denke jetzt müsste es klappen. Versuch es mal ;)
 
Zuletzt bearbeitet:
Hi

also, wenn das wirklich so im Programm steht, kann man den Namen überhaupt nicht eingeben.
Außer eventuell durch grausige Pointerfehler anderswo...

Du hast die Schleifen einfach falsch angewendet.

Besser so:
C++:
void name2 () 
{ 
	char ch = 0; 
	do 
	{ 
		cout<<"Wie lautet dein Name?"; 
		cin.get (noname,30); 
		cout<<"ist dein name "<<noname<< " ?  \n <J>a oder <N>nein"<<endl; 
		cin.get(ch); 
		cin.get(ch); // damit die eingabe forderung umgangen wird (\n oder endl) 
		cin.clear(); 
	}while (ch != 'j' && ch != 'J'); 
}

Gruß

xtictacx: Warst zwar schneller, aber das && ist schon richtig ;)
 
ah ok das war also ein denk fehler meinerseits
so jetzt geändert und es klappt
aber @XTicTacX wenn ich in deinem beispiel ein || mache komme ich nicht aus der schleife raus ^^
aber trotzdem danke ^^
 
Zurück