Programm stürzt ab - was fehlt im Code?
-
hallo
habe mich schon vor längerem mal mit cpp befasst. dann wieder eine zeit lang nicht mehr... und jetzt wieder. :p
mein problem ist folgendes:
habe eine tutorial gelesen und dann einen code geschrieben, bei dem zwei zahlen eingegebn werden und herausgelesen wird ob zahl a und b gleich gross, a grösser oder b grösser ist.
nach erfolgreichem kompilieren, gebe ich die erste zahl ein - enter - und dann die zweite zahl - nochmals enter. dann stürzt das programm ab. kp wieso.
kann mich nur noch daran erinnern, das ich mal einen aus meiner schule gefragt hatte, ob er mir ein bisschen cpp beibringen könnte und der hat zu#include<iostream> using namespace std;noch andere präprozessoren (oder wie das auch immer heisst) hinzugefügt. weiss aber nicht mehr was das war und wir haben gerade winterferien. kann es sein das es daran liegt?
ich benutze den Bloodshed Dev-C+ compiler (v.5)hier mal den code:
#include<iostream> using namespace std; int main() { cout<<"Geben Sie eine Zahl ein.\n"; int a; cin>>a; cout<<"Bitte geben Sie eine weitere Zahl ein.\n"; int b; cin>>b; if(a==b) { cout<<"Die erste Zahl ist gleich gross wie die zweite Zahl.\n"; } if(a<b) { cout<<"Die erste Zahl ist kleiner wie die Zweite.\n"; } if (a>b) { cout<<"Die erste Zahl ist grösser wie die Zweite.\n"; } }
-
Es stürzt nicht ab, es wird beendet. Siehe dazu entweder hier unter Punkt 2 oder füge einfach ein
char c; cin >> c;vor'm Programm-Ende ein.
Gruß
Werner
-
danke für die kleine hilfe
funzt prima 
aber für was steht das? und wieso muss man das machen? in dem tut das ich gelesen habe stehts ohne? ist das compiler-abhängig?
-
Nein, das ist OS Abhängig. Die Konsole in Windows schliesst sich einfach wieder, bei Beenden des Programms.
Wen dus richtiger machen willst, lass das Zeug weg und starte das Programm direkt aus der Konsole.
-
Nein, wenn du dein Programm direkt aus der konsole startest brauchst du es auch nicht.
Aber wenn du das Programm per Doppelklick auf die exe startest schliesst sich die konsole eben wieder nachdem das Programm fertig ist. cin>>c sorgt dafür dass das Konsolenfenster geöffnet bleibt.
-
vielen dank für die hilfe. aber wenn ich das programm nicht vom compiler aus starte sonder nmit doppel-klick auf die *.exe-datei schliesst das prog auch. bzw. es braucht
char c; cin >> c;trotzdem.
-
genau das sagte ich ja!
aus der konsole heisst unter windows z.B die MSDOS Eingabeaufforderung zu öffnen und von da aus das Programm zu starten.
-
ah ok. hab dich anscheinend falsch verstanden.

Shinja schrieb:
Nein, wenn du dein Programm direkt aus der konsole startest brauchst du es auch nicht.
du hast ja "man braucht es auch nicht" geschrieben. darum dachte ich...
-
sry für doppelpost aber ich hab da noch eine frage.
wenn man ein programm ausführt und z.b. bei meinem code das ganze programm nochmals ausführen möchte, gibt es da die möglichkeit das ganze im gleichen fenster nochmals neu zu starten? immer schliessen und wieder öffnen ist ja umständlich.
-
hm?
habe das hoffentlich richtig verstanden. also wenn du in einem dos-fenster (in dem bereits ein programm läuft; du also keine möglichkeit hast ein dos-commando einzugeben (oder prog zu starten)) müsstest du schon das aktuelle program beenden da it du wieder dass prompt siehst.
-
naja, du kannst alles was in der main steht in eine while(true) schleife packen und am ende fragen:
std::cout<<"One more time (y/n)? "; char yesno; std::cin>>yesno; while(yesno!='y' && yesno!='n'){ std::cout<<"Falsche Eingabe. Nochmal: "; cin>>yesno; } if(yesno=='y') return 0;