Konsole wird nicht beendet



  • Hallo Zusammen,
    ich hoffe ihr könnt mir weiterhelfen.

    Ich habe ein C++ in der Konsole. Dort habe ich 3 Funktionen Programmiert die jeweils eine Menuestrucktur ergeben.

    Wenn ich jetzt von Main() nach Menue2() und anschließend wieder zurück ins main. Kann ich das Programm über return 0 nicht beenden. Es öffnet sich sofort wieder die Funktion Menue2() Gehe ich erst garnicht in die Funktion Menue2() sonder Beende es sofort geht es.

    Hier mal der erste teil des Programms. Es dreht sich um die letzte switch case Anweisung.
    default: system("pause"); return 0;
    Das wird zwar ausgeführt, Beendet aber nicht das Programm sonder es wird wieder Menue2() aufgerufen. Hoffe mir kann da wer Helfen.

    Gruß

    int main()
    {     
    
    int mpunkt = 0; 
     // system("color B");
    
    bool exit = false;
    while(!exit)
    {
    
    		switch (mpunkt)
    		{
    		case 0:
    			system("CLS");
    			cout<<"Welchen Regler moechten Sie verwenden?"<<endl;
    			cout<<"P - Regler:\t<<"<<endl;
    			cout<<"PI - Regler:"<<endl;
    			cout<<"PID - Regler:"<<endl;
    			cout<<"Beenden"<<endl<<mpunkt;
                mpunkt = 0; break;
    		case 1:
    			system("CLS");
    			cout<<"Welchen Regler moechten Sie verwenden?"<<endl;
    			cout<<"P - Regler:"<<endl;
    			cout<<"PI - Regler:\t<<"<<endl;
    			cout<<"PID - Regler:"<<endl;
    			cout<<"Beenden"<<endl<<mpunkt;
    			mpunkt = 1; break;
    		case 2:
                system("CLS");
    			cout<<"Welchen Regler moechten Sie verwenden?"<<endl;
    			cout<<"P - Regler:"<<endl;
    			cout<<"PI - Regler:"<<endl;
    			cout<<"PID - Regler:\t<<"<<endl;
    			cout<<"Beenden"<<endl<<mpunkt;
                mpunkt = 2; break;
    		case 3:
                system("CLS");
    			cout<<"Welchen Regler moechten Sie verwenden?"<<endl;
    			cout<<"P - Regler:"<<endl;
    			cout<<"PI - Regler:"<<endl;
    			cout<<"PID - Regler:"<<endl;
    			cout<<"Beenden\t\t<<"<<endl<<mpunkt;
                mpunkt = 3; break;
    		default:
    			break;
    		}
    
        if(kbhit())
        {
    		char c =_getch(); 
            switch(c)
            {
                    case 72:                             
                         mpunkt = mpunkt--;
                        break; 
    
                    case 80:                           
                        mpunkt = mpunkt++;
                        break; 
    				case 13:
    					switch (mpunkt)
    					{
    					case 0: 
    						aw1=mpunkt;
    						menue2();
    						break;
    					case 1: 
    						aw1=mpunkt;
    						menue2(); 
    						break;
    					case 2: 
    						aw1=mpunkt;
    						menue2(); 
    						break;
    					default:  system("pause"); return 0;  break;
    					}
    
            }
    		if (mpunkt<0)
    		{
    			mpunkt=0;
    		}
    		if (mpunkt>3)
    		{
    			mpunkt=3;
    		}
    }
    Sleep(10);  		
    
    } 
    return 0;
    }
    


  • Woher weißt du, dass die Zeile ausgeführt wird?



  • Da ich das im Debug modus beobachtet habe und das system("pause") was ich da eingefügt habe auch ausgeführt wird. also muss doch das return 0 auch ausgeführt werden?



  • Zum Debuggen ist es ziemlich ungeschickt, mehrere Anweisungen in einer Zeile zu haben.
    Grundsätzlich müsste das Programm nach dem return beendet werden. Da Funktionen sich nicht öffnen, weiß ich nicht, was du damit meinst.

    Spekulation: du rufst in menu2 illegaler weise main auf und springst beim return wieder in die Funktion zurück.



  • Du setzt exit nie auf true ...


Log in to reply