[C++] if/else Anweisung... Fenster schließt zu schnell?

byte_head

Captain
Registriert
Jan. 2005
Beiträge
3.674
Hi,

ich sitze grade an meinem Laptop unter Win und habe ein kleines Testprogramm zu if/else geschrieben. Leider funktioniert es noch nicht richtig.
Wäre nett wenn ihr einen Blick draufwerfen könntet. :)

Code:
#include <iostream>

using namespace std;

int main()
{
	int a, //b, c, d;
	cout << " Willkommen zum if/else Testprogramm! " << endl;
	cout << " Bitte geben sie eine Zahl ein! " << endl;
	cin >> a;
	cout << " a ist: " << a << endl;
	 if ( a >= 10 )
		{ 
            cout << "Wunderbar, sie haben eine Zahl >= 10 eingegeben!\n";
		}
		
        else
	    		cout << " Ihre Zahl war kleiner als 10, wie schade!! \n";
	    		
	
// getchar();
return 0;
}

Danke schonmal, byte :)

PS: Freitag der 13., Dev-C++ und KDevelop machen Probleme. :freak:
 
Naja, wenn du halt vor return 0; nicht irgendeine Funktion aufrufst, die das Programm warten lässt, dann tut es dass auch nciht.
-> system("PAUSE"); vors return 0; und schon ist das Prob gelöst.
 
Von der Verwendung des system-Befehls rate ich Dir ab. Das ist erstens kein schöner Stil, weil das nicht unbedingt betriebssystemunabhängig ist (je nach verwendetem Argument von system() ), und zweitens hat man keine absolute Kontrolle über das was ausgeführt wird, sondern muss sich auf Code von anderen verlassen. Ich persönlich mag das nicht.
Für Deine Zwecke behebt ein einfaches
Code:
cin.get();
das Problem. Das Fenster geht dann erst nach Drücken der Entertaste zu.
 
So,

damit alles reibungslos funktioniert musste ich cin.get(); gleich 2x einfügen.

Muss ich jetzt in jedem Konsolenprogramm was ich schreibe dauernd cin.get(); angeben? Habe nun endlich mal ein C++ Buch gefunden mit dem ich sehr gut klarkomme und da habe ich das bis jetzt noch nicht gefunden. :D

Danke an euch 2. :)

PS: Der Spruch aus deiner Sig gefält mir als Linuxuser besonders gut. :evillol:
 
byte_head schrieb:
Muss ich jetzt in jedem Konsolenprogramm was ich schreibe dauernd cin.get(); angeben? Habe nun endlich mal ein C++ Buch gefunden mit dem ich sehr gut klarkomme und da habe ich das bis jetzt noch nicht gefunden. :D
Das kommt auf die Anwendung an. Wenn du das fertig compilierte Programm dann von einer Konsole (Linux) oder Eingabeaufforderung aufrust, und es eine reine Konsolenanwendung ist, dann nicht. Denn dann endet das Programm eben, aber die Konsole von der aus Du das Programm aufgerufen hast bleibt noch offen, und somit der Output den das Programm produziert hat noch lesbar.
Ich denke das ist nur ein Problem von Dev-C++ bzw. von Entwicklungsumgebungen allgemein beim direkten Ausführen des Programmes nach dem Compilen. Denn dann wird die *.exe direkt ausgeführt, und nicht in einer Konsole oder dergleichen. Probier mal Dein kleines Programm direkt aus der Eingabeaufforderung zu starten, ohne dass Du cin.get verwendest am Ende. Dann weisst Du was ich meine :)
 
Zuletzt bearbeitet:
:freak:

Natürlich! Jetzt wird mir eines klar.
Super, vielen Dank. :)

Hoffe wir sehen dich hier öfter bei Computerbase. ;)
 
Also alternativ würde es so auch funktionieren
statt return schreibst du getch(). Der befehl wartet solange bis ne Taste gedrückt wird. Für getch brauchst du die Bibliothek <conio>.
mfg

Code:
#include <iostream>
#include <conio>

int main()
{
	int a;
	cout << " Willkommen zum if/else Testprogramm! " << endl;
	cout << " Bitte geben sie eine Zahl ein! " << endl;
	cin >> a;
	cout << " a ist: " << a << endl;
	 if ( a >= 10 )
		{
            cout << "Wunderbar, sie haben eine Zahl >= 10 eingegeben!\n";
		}

        else
        cout << " Ihre Zahl war kleiner als 10, wie schade!! \n";


getch();

}
 
Dein Compiler wird es dir danken.
 
Ich würd mich bei so einem Konsolenprogramm um nichts weniger kümmern als um die Performance...
Und mal ganz im Ernst: einfach system ("PAUSE"); tuts auch.
 
byte_head schrieb:
Ist es nicht eher performancebremsender noch eine #include anzufügen?
wie kommst du denn darauf? das einzige was sich ändert ist die kompilierzeit. aber das nur wirklich marginal..
 
Zurück
Oben