Mit Enter Eingabe, eine Funktion ausführen



  • Danke.

    Nur leider übergeht der diese Anweisung, und springt direkt wieder ins Hauptmenü. Hast du eine Idee, wieso mein compiler das macht?

    case 2: 
    
    			system("cls");
              for(int i=0; i < 499; i++){     
    
    			  if(la[i].getstartnr() > 0){
                    la[i].ausgeben();
    				continue;
    			  }
    			  else
    			  {
    				break;
    			  }
    
    			} 
    			cout<<"Bitte ENTER-Taste drücken";
    			while(cin.get()=='\n'){
    			break;
    			}
    
    			break;
    	case 3:
    


  • So vll.:

    bool finished= false;
    do{
    switch(...){
    .
    .
    .
    .
    case 2: 
    
                system("cls");
              for(int i=0; i < 499; i++){     
    
                  if(la[i].getstartnr() > 0){
                    la[i].ausgeben();
                    continue;
                  }
                  else
                  {
                    break;
                  }
    
                } 
                cout<<"Bitte ENTER-Taste drücken";
                while(cin.get()=='\n'){
                  finished= true;
                }
    
                break;
        case 3: 
    .
    .
    ..
    
    }
    }while(!finished);
    


  • Martini123 schrieb:

    Nur leider übergeht der diese Anweisung, und springt direkt wieder ins Hauptmenü. Hast du eine Idee, wieso mein compiler das macht?

    while(cin.get()=='\n'){
    	break;
    }
    

    Du springst ja schon im ersten Durchlauf aus der "Warte auf Enter"-Schleife raus 😉

    PS: Mir ist gerade ein Fehler bei meinem Code aufgefallen - es muß while(cin.get()!='\n') heißen.



  • Wenn das so realisiere, dann wartet der Compiler an der Stelle,
    aber bei eingabe von Return, passiert leider nichts. Es kommt
    auch kein Compiler-Fehler



  • @BorisDieKlinge Bei der Lösung passiert bei Eingabe des Returns nichts, aber hier wird nicht sofort ins Hauptmenü gesprochen

    @CStoll
    Auch wenn ich in der while-schleife das break entferne, wird die whileschleife übergangen und ich befinde mich wieder im hauptmenü (ohne enter eingeben zu können)



  • *grübelt* Was war denn das letzte, was du vor dem switch()-Block eingegeben hast? Ich würde ja vermuten, daß von der letzten Eingabe noch ein ENTER im Tastaturpuffer zurückgeblieben ist, das du erst entsorgen mußt (schau dir mal cin.ignore() an).



  • Also zuerst geh unter menüpunkt 1 rein, um die Objekte anzulegen, nach der letzten eingabe, befinde ich wieder im Hauptmenü.
    Nun geb ich die Zahl 2 ein um in den Menüpunkt zukommen (case 2), die Eingabe 2
    muss ich natürlich mit enter bestätigen.

    Könnte es daran liegen? Wenn ja, was muss ich dann machen?

    Vielen Dank, dass du versuchst mir weiterzuhelfen.



  • achso sorry, hast du ja geschrieben, dass es daran liegen könnten 😃

    Nur zum Verständnis, was und an welcher Stelle muss ich jetzt was ignorieren?



  • cin.ignore(); // evtl. mußt du hier Parameter angeben
    while(cin.get()!='\n')
    {
    }
    


  • Jetzt geht es, *freu*

    Ich bedanke mich bei allen Beteiligten und wünsche euch noch
    einen schönen Tag.

    Gruß
    Martini


Anmelden zum Antworten