Eingabe automatisch mit Enter bestätigen?



  • Hi,
    bin schon ein ganzes Stück weiter gekommen. Jetzt fehlt nur noch die Hauptfunktion meines Programms.

    Davor habe ich aber noch eine kurze Frage. Ich habe hier diese Funktion.

    [cpp]
    //...
            cout << endl << endl << endl;
    	cout << "Geben Sie 'z' ein um zum Anfang zu gelangen:  ";
    	cin >> auswahl;
    
    	//Eingabe wird getestet und Fehler wird abgefangen
    	if(auswahl == 'z') {
    		system("cls");
    		start();
    	}
    	else {
    		system("cls");
    		cout << "------------------------" << endl;
    		cout << "Achtung! Fehler bei der Eingabe!" << endl;
    		cout << "Bitte geben Sie 'z' ein!" << endl;
    		cout << "------------------------";
    		kontoUebersicht();
    	}
    //...
    [/cpp]
    

    Nun muss man ja die Eingabe von 'z' noch mit Enter bestätigen. Gibt es eine Möglichkeit, die es mir ermöglicht einfach z einzugeben ohne das Enter?

    Danke für eure Hilfe!



  • compilerunabhängig: nein.

    Manche Compilerhersteller liefern eine <conio.h> mit, in welcher sich die Funktion getch( ) findet:

    // Prototype:
    int get( void );
    

    Sie liefert den ASCII-Code der zuletzt gedrückten Taste.

    in deinem Falle also:

    //...
        cout << "Geben Sie 'z' ein um zum Anfang zu gelangen:  ";
    
        //Eingabe wird getestet und Fehler wird abgefangen
        if( getch( ) == 'z' ) {
    
            system("cls");
            start();
    
        } else {
    //...
    

    Greetz, Swordfish



  • Dankeschön, funktionieren tut das schon, allerdings noch nicht richtig. Bei dieser Funktion zB: wird ja die wahl übergeben und in der anderen ausgewertet. Wie geh ich dann vor?

    [cpp]
    //Funktion zum starten der Auswahl
    char start() {
    	char wahl;
    
    	cout << "-------------------" << endl;
    	cout << "Mein Finanzplaner" << endl;
    	cout << "-------------------" << endl;
    	cout << endl;
    
    	cout << "1.Mein Konto"<< endl;
    	cout << "2.Umsaetze" << endl;
    	cout << "3.Beenden" << endl;
    	cout << endl << endl;
    	cout << "Treffen sie Ihre Auswahl:  ";
    	cin >> wahl;
    
    	startAuswahl(wahl);
    	return 0;
    }
    [/cpp]
    

    Hier wird die wahl dann ausgewertet

    [cpp]
    //Funktion zum Ausgeben der Kontoinformationen
    void kontoUebersicht() {
    	void startAuswahl(char wahl) {
    	//Eingabe wird auf Ergebnis geprüft
    	if((wahl != '1') && (wahl != '2') && (wahl != '3')) {
    		cout << endl;
    		system("cls");
    		cout << "----------------------------------------------------------------------" << endl;
    		cout << "Achtung! Fehler bei der Eingabe!" << endl;
    		cout << "Bitte geben Sie '1' (Mein Konto) / '2' (Umsaetze) oder '3' (Ende) ein!" << endl;
    		cout << "----------------------------------------------------------------------" << endl;
    		start();
    
    	}
    	else {
    		switch(wahl) {
    			case '1': system("cls");
    						kontoUebersicht();
    				break;
    			case '2': system("cls");
    						umsaetze();
    				break;
    			case '3': system(0);
    				break;
    		}
    	}
    }
    }
    [/cpp]
    

    Danke!



  • sag' mal, warum definierst du startAuswahl() in kontoUebersicht()!!???
    Was soll system( 0 ) bewirken??
    Bei etlichen Fehleingaben hintereinander produzierst du eine schöne ewigrekursion:

    start() -> startAuswahl() -> start() -> startAuswahl() ...

    Das macht man so nicht!!!!1111elf

    Beispiel:

    int main( )
    {
        bool do_exit = false;
        do {
            cout << "-------------------" << endl;
            cout << "Mein Finanzplaner" << endl;
            cout << "-------------------" << endl << endl;
            cout << "1: Mein Konto"<< endl;
            cout << "2: Umsaetze" << endl;
            cout << "3: Beenden" << endl << endl << endl;
            cout << "Treffen sie Ihre Auswahl:  ";
    
            switch( getch( ) ) {
    
                case '1':
    
                    system( "cls" );
                    kontoUebersicht( );
                    break;
    
                case '2':
    
                    system("cls");
                    umsaetze();
                    break;
    
                case '3':
    
                    do_exit = true;
                    break;
    
                default:
    
                    system("cls");
                    cout << "----------------------------------------------------------------------" << endl;
                    cout << "Achtung! Fehler bei der Eingabe!" << endl;
                    cout << "Bitte geben Sie '1' (Mein Konto) / '2' (Umsaetze) oder '3' (Ende) ein!" << endl;
                    cout << "----------------------------------------------------------------------" << endl;
                    break;
            }
        } while( !do_exit );
    }
    

    Greetz, Swordfish


Anmelden zum Antworten