C++ Problem mit kleinen Programm

11/25/2015 21:13 Alexander2202#1
Hallo ich wollte fragen was mein Fehler bei diesen Kleien Programm ist weil das Programm schließt sich immer wieder automatisch nachdem ich eine Zahl mit Enter eingegeben habe nur ich will das es mir noch den restlichen Text anzeigt.
(War nur ein Spaß programm also nicht wunder wegen der Begriffe)^^

PHP Code:
#include <iostream>

using namespace std;

int main ()
{
    
int auswahl;

    
cout << "Was sind sie führ ein Cheater?" << endl;
    
cout << "1 - Ein Legit Cheater?" << endl;
    
cout << "2 - Ein Rage Cheater?" << endl;
    
cout << "3 - Ein Legit und Rage Cheater?" << endl;


    
cin >> auswahl;

        if(
auswahl==1)
            
cout << "Ich würde ihnen System Cheats empfehlen" << endl;

        else if(
auswahl==2)
            
cout << "Ich würde ihnen EngineOwning empfehlen" << endl;

        else if(
auswahl==3)
            
cout << "Ich würde ihnen Netcoders empfehlen" << endl;

        else
            
cout << "Wenn sie noch kein Cheater sind dann versuchen sie es einmal" << endl;

        
getchar ();
        return 
0;

    

11/26/2015 02:44 .SkyneT.#2
1. Keine Globalen "using namespace", kann evtl. zu Namespace Überlappungen führen.
2. Statt dem if-else würde ich hier ein switch-case verwenden.
3. Du solltest cin.ignore() verwenden um auf eine Eingabe zu warten, und diese dann zu ignorieren. (Dies musst du hier aus dämlichen Eingabebuffer-Gründen zwei mal aufrufen, genauere Erklärung kannst du googeln, falls es dich interessieren sollte)

Am Ende würde ich das ganze so in etwa lösen:

Und nochwas: FÜR, nicht führ, das hat nichts mit führen oder nem Führer oder sonst was zu tun!
11/28/2015 15:53 Alexander2202#3
Quote:
Originally Posted by .SkyneT. View Post
1. Keine Globalen "using namespace", kann evtl. zu Namespace Überlappungen führen.
2. Statt dem if-else würde ich hier ein switch-case verwenden.
3. Du solltest cin.ignore() verwenden um auf eine Eingabe zu warten, und diese dann zu ignorieren. (Dies musst du hier aus dämlichen Eingabebuffer-Gründen zwei mal aufrufen, genauere Erklärung kannst du googeln, falls es dich interessieren sollte)

Am Ende würde ich das ganze so in etwa lösen:

Und nochwas: FÜR, nicht führ, das hat nichts mit führen oder nem Führer oder sonst was zu tun!
Ich danke dir schon einmal für die Antwort nur das Programm schließt sich immer noch nachem ich die Eingabetaste gedrückt habe :/
11/28/2015 21:18 MuffinMario#4
Ich schätze mal du benutzt den normalen Visual Studio Compiler. In dem Falle würde ich einfach, simpel und systemspezifisch die system(cmd) Funktion benutzen und den Parameter mit einem pause-Befehl besetzen.
Dafür includen wir den Headerfile cstdlib (stdlib.h wird glaub ich auch funktionieren)

nehmen wir mal ein altes Beispiel von mir, welches ein switch case beinhaltet, was in deinem Falle sicherlich besser aussehen würde , anstatt die Verzweigungen zu benutzen.
Code:
#include <iostream>
#include <cstdlib>
#include <locale> // Deutsche Zeichenkodierung

int main() {
	unsigned short wetter{ 0 };

	std::locale::global(std::locale("GERMAN")); // locale
	std::cout << "Wie ist das Wetter heute?" << std::endl
		<< " - 1 - gut" << std::endl
		<< " - 2 - so la la" << std::endl
		<< " - 3 - miserabel" << std::endl << ">";
	std::cin >> wetter;

	switch (wetter) {
	case 1:
		std::cout << "Einen schönen Tag noch!" << std::endl;
		break;
	case 2:
		std::cout << "Falls Sie möchten, kann ich ihnen ein Taxi rufen." << std::endl;
		break;
	case 3:
		std::cout << "Ein Regenschirm wäre sicherlich nicht schlecht" << std::endl;
		break;
	default:
		std::cout << "Dies ist keine passende Eingabe" << std::endl;
	}

	system("PAUSE");
	return 0;
}
Ignorier einfach das meiste, das wichtige hierbei ist nur, dass du am Ende system("pause"); einfügst. Das verursacht, dass vor dem Beenden der funktion der Befehl zu der Konsole gesendet wird und das Programm pausiert wird.

[Only registered and activated users can see links. Click Here To Register...]

Wie man sieht muss man nun zum Weiterführen des Programmes eine Taste drücken

//EDIT: Nochmal zum mitschreiben: Die Methode wird nur empfohlen für private Zwecke. Öffentlich hat so eine Methode meistens Probleme, da sie Systemabhängig ist. Nicht jedes Betriebssystem hat den Kommandobefehl pause