Cosole per 'e' beenden



  • Hallo,
    ich wollte meine console mit einem Tastendruck auf ESC beenden und weiß leider nicht wie es in vc++ funktioniren soll...

    Ich habe schon gegooglet und die suche benutzt aber nichts gefunden...

    thx schonmal,
    numberone123



  • _getch() !?



  • also wie soll ich die denn einfügen
    ich hab eine do-while schleife

    do{
    blablabla...
    
    while(s == 1)
    

    und wollte dann irgend wo mitten im Programm also eigentlcih immer mit einem z.B."e" beenden das mit esc ist glaub doch zu schwer...

    kann der thread mal verschoben werden?
    bin neu hier und frag mal nett 😃

    Mfg,
    numberone123



  • do
    {
      //Dein Zeug
    }
    while(!GetAsyncKeyState(0x45) < 0)
    

    0x45 ist der hexadezimale Tastencode für "e"

    EDIT: Benötigt den Header winuser.h!
    Am Anfang der Datei schreibst du eben noch

    #include <windows.h>
    

    hin.



  • Hi thx,
    aber das Programm wird doch dadruch nicht mitten drin abgebrochen oder?

    und diese Schleife nutze ich ja um das Progrmam noch einaml zu starten



  • Es wird lediglich die Schleife verlassen!
    Wenn du nachher nichts mehr hast beendet sich auch das Programm.



  • numberone123 schrieb:

    das mit esc ist glaub doch zu schwer...

    Quatsch! 😉
    Statt

    GetAsyncKeyState(0x45)
    

    schreibst du

    GetAsyncKeyState(0x1B)
    

    hin!

    PS: 1B ist der Code für Escape



  • Also bei mir passiert nichts wenn ich das drücke ,ich hab noch dort hinter
    das stehen

    cout << endl << "Das Programm wurde beendet!";
    
    cin.clear();
    cin.ignore(cin.rdbuf()->in_avail());
    cin.get();
    
    return 0;
    

    EDIT:
    hab auch die header includiert.

    er geht einfach damit nicht aus der Schleife raus

    hmmm jetzt beendet er ohne tasten druck



  • numberone123 schrieb:

    Hallo,
    ich wollte meine console mit einem Tastendruck auf ESC beenden und weiß leider nicht wie es in vc++ funktioniren soll...

    Ok! Zeig mal deinen Code und sag, wo er wegen einem Escape beenden soll!



  • do {
    	system("CLS");	//Clear Bildschirm
    
    	Sleep(500);
    
    	cout << "\t\t\t\t" << "Rechner\n";
    
    	cout << endl << "Wie wollen sie rechnen(n (+,-,*,/,^,%), Wurzel ziehen = w, Umfang/Fl"<< ae <<"che = u) ";
    	cin >> w;
    
    //Hier beenden können
    
    	Sleep(550);
    
    	if (w == 'n') {
    	system("CLS");
    	cout << "\t\t\t\t" << "Rechner\n";
    
    	cout << endl << "Das Zeichen";
    	cout << endl << "(*, /, +, -, %, ^): ";
    
    //Hier beenden können
    
    	unsigned char op;
    	cin >> op;
    
    	Sleep(500);
    
    	cout << endl << "Bitte geben sie eine Zahl ein: ";
    
    	if (!(cin >> a)){
    		cerr << endl << "Fehler bei der Eingabe!";
    		cin.clear ();
    		cin.ignore (cin.rdbuf () -> in_avail ());
    		cin.get ();
    		exit(1);
    	}
    
    	Sleep(500);
    
    	cout << endl << "Und noch eine Bitte: ";
    
    	if(!(cin >> b)) {
    		cerr << endl << "Fehler bei der Eingabe!";
    		cin.clear ();
    		cin.ignore (cin.rdbuf () -> in_avail ());
    		cin.get ();
    		exit(1);
    	}
    
    	Sleep(500);
    
    	if (op == '+') {
    		rech ( a + b );
    	}
    	else if (op == '-') {
    		rech ( a - b );
    	}
    	else if (op == '*') {
    		rech (  a * b );
    	}
    	else if (op == '/') {
    		rech ( a / b );
    	}
    	else if (op == '%') {
    		rech ( a / 100 * b );
    	}
    	else if (op == '^') {
    		rech (pow ( a,b));
    	}
    	else {
    		cout << "Fehler bei der Eingabe!";
    	}
    
    	cin.clear ();
    	cin.ignore (cin.rdbuf()->in_avail());
    
    		}
    	else if ( w == 'w') {
    //hier beenden können
    	system("CLS");
    	cout << "\t\t\t\t" << "Rechner\n";
    	cout << endl << "Aus welcher Zahl wollen sie die Wurzel ziehen?: ";
    
    	if(!(cin >> Zahl)) {
    		cerr << endl << "Fehler bei der Eingabe!";
    		cin.clear ();
    		cin.ignore (cin.rdbuf () -> in_avail ());
    		cin.get ();
    		exit(1);
    		}
    
    	Sleep(500);
    
    	double Sqareroot = sqrt(Zahl);
    
    	quadratwurzel(Sqareroot);
    	}
    	else if ( w == 'u') {
    //hier beenden können
    		system("CLS");
    		cout << "\t\t\t\t" << "Rechner\n";
    		unsigned int lr,br;	//Länge und Breite vom Rechteck
    		int ei;		//Eingabe
    		int ad,bd,cd;	//Seiten vom Dreieck
    		int usd,hd;		//grund und höhe vom dreieck
    		float kr;	//Kreisradius
    
    		Sleep(500);
    
    		cout << endl << "Die Fl"<< ae <<"che und Umfang eines Rechtecks rechnen(1), und eines Dreiecks (2)\n"
    			<< endl <<"und eines Kreises(3). ";
    
    		Sleep(2000);
    
    		cout << endl << "\nNun ihre Eingabe: ";
    
    		if(!(cin >> ei)) {
    		cerr << endl << "Fehler bei der Eingabe!";
    		cin.clear ();
    		cin.ignore (cin.rdbuf () -> in_avail ());
    		cin.get ();
    		exit(1);
    		}
    
    		system("CLS");
    
    		cout << "\t\t\t\t" << "Rechner\n";
    		Sleep(2000);
    
    		switch ( ei ) {			//Eingabe Auswahl
    		case 1 :
    			cout << endl << "Berechnung eine Rechtecks!\n\n";
    
    			cout << endl << "Geben sie bitte die L"<< ae <<"nge des Rechtecks ein: ";
    
    			if(!(cin >> lr)) {
    			cerr << endl << "Fehler bei der Eingabe!";
    			cin.clear ();
    			cin.ignore (cin.rdbuf () -> in_avail ());
    			cin.get ();
    			exit(1);
    			}
    
    			Sleep(500);
    
    			cout << endl << "Und nun bitte die Breite: ";
    
    			if(!(cin >> br)) {
    			cerr << endl << "Fehler bei der Eingabe!";
    			cin.clear ();
    			cin.ignore (cin.rdbuf () -> in_avail ());
    			cin.get ();
    			exit(1);
    			}
    
    			Sleep(500);
    
    			flaeche(lr * br );
    			umfang(2*lr+2*br);
    			break;
    		case 2 :
    			cout << endl << "Berechnung eines Dreiecks!\n\n";
    			Sleep(500);
    
    			cout << endl << "Bitte die Seite a vom Dreieck: ";
    
    			if(!(cin >> ad)) {
    			cerr << endl << "Fehler bei der Eingabe!";
    			cin.clear ();
    			cin.ignore (cin.rdbuf () -> in_avail ());
    			cin.get ();
    			exit(1);
    			}
    
    			Sleep(500);
    
    			cout << endl << "Bitte die Seite b: ";
    
    			if(!(cin >> bd)) {
    			cerr << endl << "Fehler bei der Eingabe!";
    			cin.clear ();
    			cin.ignore (cin.rdbuf () -> in_avail ());
    			cin.get ();
    			exit(1);
    			}
    
    			Sleep(500);
    
    			cout << endl << "Bitte die Seite c: ";
    
    			if(!(cin >> cd)) {
    			cerr << endl << "Fehler bei der Eingabe!";
    			cin.clear ();
    			cin.ignore (cin.rdbuf () -> in_avail ());
    			cin.get ();
    			exit(1);
    			}
    
    			Sleep(500);
    
    			cout << endl << "Grundfl"<<ae<<"che(Boden): ";
    
    			if(!(cin >> usd)) {
    			cerr << endl << "Fehler bei der Eingabe!";
    			cin.clear ();
    			cin.ignore (cin.rdbuf () -> in_avail ());
    			cin.get ();
    			exit(1);
    			}
    
    			Sleep(500);
    
    			cout << endl << "Die H"<< oe <<"he vom Dreieck: ";
    
    			if(!(cin >> hd)) {
    			cerr << endl << "Fehler bei der Eingabe!";
    			cin.clear ();
    			cin.ignore (cin.rdbuf () -> in_avail ());
    			cin.get ();
    			exit(1);
    			}
    
    			Sleep(1000);
    
    			umfang(ad+bd+cd);
    			flaeche(usd*hd/2);
    			break;
    		case 3 :
    			cout << endl << "Berechnung eines Kreises!\n\n";
    			Sleep(500);
    
    			cout << endl << "Bitte den Radius eingeben: ";
    
    			if(!(cin >> kr)) {
    			cerr << endl << "Fehler bei der Eingabe!";
    			cin.clear ();
    			cin.ignore (cin.rdbuf () -> in_avail ());
    			cin.get ();
    			exit(1);
    			}
    
    			Sleep(1000);
    
    			umfang(2*M_PI*kr);
    			flaeche(M_PI*kr*kr);
    			break;
    		default :
    			cout << endl << "Fehler bei der Eingabe!";
    			break;
    
    				}
    			}
    	else {
    		cout << endl << "Fehler bei der Eingabe!";
    		}
    
    	cin.clear();
    	cin.ignore(cin.rdbuf()->in_avail());
    	cin.get();
    //hier beenden können
    	system("CLS");
    	Sleep(500);
    	cout << "\t\t\t\t" << "Rechner\n";
    
    	cout << endl << endl << "Wollen sie noch einmal etwas Berechen? (y,n) ";
    	char yn;
    	cin >> yn;
    
    		if (yn == 'y') {
    		s = 1;
    		}
    		else {
    		s = 0;
    		}
    
    	}while( s == 1 );
    

    hab das was du gesagt hast mal kurz raus gelassen...


Anmelden zum Antworten