Programm beendet sich nach eingabe



  • Hallo ich habe folgendes Problem und zwar habe ich angefangen c++ zu lernen und habe auch gleich bei einer simplen eingabe ein problem

    #include <iostream>
    using namespace std;
    
    void wait()
    {
    	cin.clear();
    	cin.ignore( std::cin.rdbuf()->in_avail() );
    	cin.get();
    }
    
    int main()
    {
    	int TeamTore, GegenteamTore;
    	cout << "Geben Sie den Punktestand der Team ein: ";
    	cin >> TeamTore;
    
    	cout << "Geben Sie den Punktestand der Gegenteam ein: ";
    	cin >> GegenteamTore;
    
    	if (TeamTore > GegenteamTore)
    	cout << "Vorwaerts Team!" << endl;
    
    	if (TeamTore < GegenteamTore)
    	{
    		cout << "Vorwaerts Gegenteam!" << endl;
    		cout << "Tolle Tage hier!" << endl;
    	}
    
    	if (TeamTore == GegenteamTore)
    	{
    		cout << "Das kann nicht sein!" << endl;
    	}
    	cout << "Danke fuer die Nachricht.";
    	cout << endl;
    	wait();
    	return 0;
    }
    

    Nach der Eingabe für den Punktestand vom Gegenteam beendet sich das Programm, jedoch nur wenn ich es per doppelklick auf die .exe ausführe. Aber wenn ich es auf Konsole versuche dann geht es und unter linux funktioniert es auch einwandfrei.
    Wenn ich allerdings die wait-Funktion hinzufüge geht es auch so. Doch ich frage mich warum es in der Konsole auch ohne funktioniert und nicht per Doppelklick.

    ...
    int main()
    {
    	int TeamTore, GegenteamTore;
    	cout << "Geben Sie den Punktestand der Team ein: ";
    	cin >> TeamTore;
    	wait();
    
    	cout << "Geben Sie den Punktestand der Gegenteam ein: ";
    	cin >> GegenteamTore;
    	wait();
    	...
    	...
    	wait();
    	return 0;
    }
    

    Weiß jemand vielleicht woran das liegen könnte??



  • Das Programm beendet sich auch sofort, wenn du es aus der Konsole gestartet hast - allerdings schließt Windows in dem Fall nicht die Konsole (wenn du das Programm per Doppelklick startest, schließt Windows sein Konsolen-Fenster, sobald sich das Programm beendet).



  • Aber das Programm beendet sich ja nicht wenn dort wait(); nach der Eingabe steht(wenn ich es per doppelsklick starte und in der Konsole), nur wenn ich dort kein wait(); einfüge klappts nicht per Doppelklick, sondern nur in der Konsole.



  • Nochmal: Wenn Du das Programm per Doppelklick startest, schließt sich die Konsole immer, wenn das Programm beendet ist (sprich am return 0 vorbei). Wenn Du es in der Konsole startest bekommst Du am Ende immer wieder eine Eingabeaufforderung.



  • Und es schließt sich in dem Fall nur nicht, da deine Funktion "wait", woher auch immer die stammt, auf eine Eingabe von seiten des Nutzers wartet. (std::cin.get()). Dazu räumt die "wait"-Funktion auch vorher noch den std::cin-Buffer auf ... aber egal 😛



  • Was ich eigentlich sagen will ist, dass so wie es ganz oben steht ohne wait();(die funktion is ausm forum die steht da im faq) nach dem zweiten cin das programm auhört, obwohl ganz unten vor return 0 ein wait(); steht. Doch auf einem linux system und einem zweiten XP-System funktioniert das ganze auch ohne wait(); nach dem cin einwandfrei. Soll heißen nach der zweiten eingabe die man machen muss, den gegentoren, bleibt das fenster offen und er macht dann die if-abfrage und zeigt dann dementsprechend auch den nachfolgenden Text an, da davor ja wait(); steht. Ich verstehe nur nicht warum das bei mir, auch win xp nicht funktioniert wie auf einem anderen win xp system oder unter linux.

    p.s.: ich rede vom doppelklick auf die .exe datei
    (funktioniert nicht auf meinem system aber auf anderen winxp systemen)

    // edit: definition der wait-fkt. im 1. post hinzugefuegt!



  • Kannst du mal langsam und klar zusammenfassen, worum es dir geht? Und bitte bring etwas Struktur in deine Beiträge - du schreibst ja ohne Punkt und Komma.

    (PS: Bei der FAQ-Funktion ist noch der Wurm drin - in_avial() liefert nicht überall den benötigten Wert, da könnte numeric_limets<streamsize>::max() besser sein)


Anmelden zum Antworten