Programm läuft nicht...
-
liegt wohl daran das kein offensichtlicher fehler beschreibbar ist... wie hätt ich es denn besser formulieren sollen? bin für jeden hinweis dankbar
-
hab auch schon vorher recherschiert cin.get(); hat mich aber auch noch nicht weitergebracht. danke schonmal für die antworten
-
Wie meinste das mit nicht weitergebracht?
Was möchtest du denn jetzt noch wissen, was du nicht alleine rausfinden kannst?
-
wie gesagt, hab auch mal alle bedingungen rausgenommen und nur nach c=a-b; cout<<c<<endl; getippt um mal zu prüfen aber selbst da beendet er nach der zahleneingabe... kann es sein das irgentwelche dateien dem compiler fehlen?
-
naja selbst mit cin.get(); am ende bricht das programm ab
-
Nein, schreib einfach mal "cin.get();" vor dein "return 0;" Sonst beendet das Programm ja automatisch, wenn alle Befehle abgearbeitet sind. cin.get() wartet sozusagen noch bis du eine Taste drückst und erst dann ist der ganze Code abgearbeitet.
-
versuch mal ein cin.sync( ) nach jedem cin >> ...
gruß Tobi.
-
Ja ich denke du hast es nach dem return geschrieben oder?
-
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.