ERLEDIGT
NEIN
NEIN
ANTWORTEN
5
5
ZUGRIFFE
393
393
EMPFEHLEN
-
hallo ronny mein name und ich bin ein anfänger in sachen c++,
ich habe ein programm geschrieben und wenn ich 'n' drück wo ich ins namens menü komme komme ich aus der schleife nicht mehr raus
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
#include <iostream> #include <conio.h> #include <cstdlib> #include <string> using namespace std; //variable void name2(); //prototypen char noname[30]; int main() { char Menü; do { cout<<"\n\n\n\n\n\n\n\n\t\t\t<S>piel Starten\n\t\t\t<N>ame deines Helden\n\t\t\t<O>tionen\n\t\t\t<B>eenden des Spieles\n\n\t\t\t"; cin>>Menü; switch (Menü) { case ('s'): case ('S'): { cout<<"Spiel Startet jetzt"; cout<<endl<< noname; //es sollte eigenlich ein name stehn (oder text) wenn nicht vorher in knotenpunkt name ein name steht }break; case ('o'): case ('O'): { cout<<"Optionen"; }break; case ('N'): case ('n'): { getchar(); //warum muss das da Rein? name2(); } break; case ('B'): case ('b'): { cout<<"Spiel Beendet jetzt"; }break; default: { }break; } }while ( Menü != 'b' && Menü != 'B'); system("pause"); return 0; } void name2 () { char ch; do { cout<<"dein name ist ?"; cin.get (noname,30); cout<<"ist dein name "<<noname<< " ? \n <J>a oder <N>nein\n"; cin.get(ch); cin.clear(); }while (ch != 'j' && ch != 'J'); }
-
Hey,
also ich weiß nicht ich bin jetzt auch nicht der beste C++-Programmierer, aber du liest eine variable cin.get(ch) ein und leerst sie dann wieder mit cin.clear() oder lieg ich da falsch? Weil wenn das stimmt, bleibt er ja in der Schleife weil J oder j nie in der Variable ist
mfgGebe niemals auf und überarbeite deinen Code immer und immer wieder ;) - C++ das ganze Leben lang :)
-
Nein, cin.clear() macht etwas anderes, es leert den Fehlerstrom von cin.
Das Problem ist, wenn du mit cin.get (noname, 30); etwas einliest und die Eingabe mit ENTER abschließt, bleibt das ENTER (\n) im Eingabepuffer von cin. Wenn jetzt im Code cin.get (ch) kommt, wird das \n aus dem Eingabepuffer in ch kopiert, und es findet gar keine Eingabeaufforderung für den Benutzer statt. Du hast deshalb in ch immer das \n gespeichert.
Um das zu umgehen, mach einfach 2 cin.get (ch).
-
Hi,
ich habe deinen Code jetzt nur überflogen, aber ich würde dir dringend empfehlen keine Umlaute in Variablen zu nutzen. Wird der Code im switch bei dir denn ausgeführt? Sonst lasst dir mal dein ch mit cout ausgeben, damit du siehst was wirklich drinnen steckt.
GrüßeWas soll daran kompliziert sein? Es muss doch nur ein Rad bewegt werden, man kann aufsteigen, es kommt die Matschhütte und durch den Regenbogen gelangst du zum hungrigen Affen, der Affenschwanz wird gezogen und bums kommst du zum Paradispark.
-
Gebe niemals auf und überarbeite deinen Code immer und immer wieder ;) - C++ das ganze Leben lang :)
-
Dann gebe ich einfach 31 Zeichen ein und drücke dann Enter. Dann sind wir wieder am gleichen Ort wie vorher.
Zum Thema clear:
ios::clear macht nichts anderes als das Fehlerbit auf einen Wert (Default: goodbit) zu setzen. Effektiv macht das also eigentlich gar nichts.
Die Variante, die dich optimal auf die nächste Benutzereingabe vorbereitet ist folgende:
Code cpp:1
std::cin.sync();
Mit istream::sync werden im Eingabestrom alle noch nicht gelesenen Zeichen rausgeworfen und du kannst die neue Eingabe empfangen.Viele Tutorials und Artikel zur Programmierung unter Windows mit C++ und C#. Tägliche Updates und Antworten auf eure Fragen:
Win32Easy - Blog
Es würde mich freuen, wenn ihr einen Kommentar postet!
Ähnliche Themen
-
Wie komme ich aus dieser Schleife raus?
Von hiltwin im Forum PHPAntworten: 3Letzter Beitrag: 11.10.07, 13:56 -
Rein & Raus
Von Blinda im Forum PhotoshopAntworten: 5Letzter Beitrag: 23.12.03, 13:18 -
Wie krieg ich das raus?
Von derPicknicker im Forum PhotoshopAntworten: 5Letzter Beitrag: 04.11.03, 00:35 -
Photoshop7 is ja nu raus...
Von pong im Forum PhotoshopAntworten: 8Letzter Beitrag: 27.02.02, 13:39





Zitieren
Dann denke ich ist deine Lösung richtig 
Login






