Programm läuft nicht...



  • nee nee 😞 hab ich vorm return(0);



  • okay also mit cin.sync( ) nach den cin's wartet er nach den zahlen bestätigen auf eine erneute bestätigung aber darafhin bricht er wieder ab



  • Unter umständen reicht ein cin.get(); nicht aus um das schließen des Fensters zu verhindern. Dann kann man mit cin.clear(); cin.ignore(cin.rdbuf()->in_avail()); cin.get(); den Eingabepuffer löschen.
    Kurze Erklärung: cin.clear() versetzt cin wieder in den Ursprungsstatus (zB Fehler werden wieder zurückgesetzt). cin.ignore(cin.rdbuf()->in_avail()); löscht alle Zeichen die noch im Einagebpuffer stehen (wenn man cin.get() schreibt, und jemand gibt 2 Zeichen ein, bleibt 1 Zeichen im Puffer stehen - denn cin.get() liest ja nur eines aus).

    Im Web gefunden vielleicht hilft das.



  • habt ihr mal meinen quelltext bei euch eingefügt? kann sein das meine bloddshed oberfläche ne macke hat



  • bzw. meine eingabeaufforderung



  • Also wenn ich es von VC++ ausführe wird das Programm am ende automatisch angehalten und gewartet, bis ich eine Taste drücke. Wenn ich die .exe aber so ausführe hab ich das selbe Problem.



  • Also wenn ich

    cin.clear(); cin.ignore(cin.rdbuf()->in_avail()); cin.get();
    

    statt nur cin.get(); einfüge und alle deine Bedingungen berichtigt sind funktioniert der ganze scheiß bei mir einwandfrei. Probiers mal.



  • würde gerne schreiben, dass es jetzt klappt 😞 bin echt total verwirrt, hat noch jemand eine idee



  • mach ein

    system("pause"); über dein return 0;

    normal sollte das gehen.



  • ... Wobei system()-Aufrufe immer vermieden werden sollten.
    Wieso steht hier.

    Ich weiß zwar nicht ob es stimmt, aber es scheint so, als ob in_avail() bei Windows und minGW Probleme macht. (Ich meine das auch hier mal irgendwo gelesen zu haben)
    Kann das vielleicht jemand bestätigen?

    Naja, auf jeden Fall tut es folgender Code anstatt cin.get():

    cin.clear(); cin.ignore(numeric_limits<streamsize>::max(), '\n'); cin.get();
    

    Dazu muss ganz oben allerdings noch

    #include <limits>
    

    eingefügt werden.


Anmelden zum Antworten