TaschenRechner mit Switch Case



  • #include <conio.h>
    #include <stdio.h>
    #include <windows.h>
    
    double funktion1(double a);
    double funktion2(double b);
    double funktion3(double c);
    double funktion4(double d);
    
    int main()
    {
    	char wenn='a';
    	char rechnung;
    	double ergebniss;
    	int quit;
    
    	while(wenn!='q')
    	{
    
    		printf("Geben sie bitte die Rechenart ein\n+=Additionsrechnung\n-=Subtraktionsrechnung\n*=;Multiplikationsrechnung\n/=Divisionsrechnung\nq=Beenden\n\nIhre Eingabe: ");
    		scanf("%c",&rechnung);
    
    		switch(rechnung)
    		{
    		case'+':
    
    				 ergebniss=funktion1(rechnung);
    				 printf("\nDas Ergebniss der Addition : %lf\n\n",ergebniss);
    
    			break;
    		case'-':
    
    				 ergebniss=funktion2(rechnung);
    				 printf("Das Ergebniss der Subtraktion: %lf\n\n",ergebniss);
    
    			break;
    		case'*':
    
    				 ergebniss=funktion3(rechnung);
    				 printf("Das Ergebniss der Muliplikation: %lf\n\n",ergebniss);
    
    			break;
    		case'/':
    
    				 ergebniss=funktion4(rechnung);
    				 printf("Das Ergebnis der Division: %lf\n\n",ergebniss);
    
    			break;
    		case'q':
    			wenn='q';
    		default:
    			printf("\nFalsch Eingabe!\n");
    			wenn='a';
    
    	}
    
    }
    
    }
    double funktion1(double a)
    {
    	double zahl1,zahl2,ergebniss;
    
    	printf("\n\nAddition! Geben sie bitte Zahl1 ein : ");
    	scanf("%lf",&zahl1);
    	printf("\nGeben sie bitte Zahl2 ein : ");
    	scanf("%lf",&zahl2);
    	ergebniss=zahl1+zahl2;
    	return ergebniss;
    }
    double funktion2(double b)
    {
    	double zahl1,zahl2,ergebniss;
    
    	printf("\n\nSubtraktion! Geben sie bitte Zahl1 ein : ");
    	scanf("%lf",&zahl1);
    	printf("\nGeben sie bitte Zahl2 ein : ");
    	scanf("%lf",&zahl2);
    	ergebniss=zahl1-zahl2;
    	return ergebniss;
    }
    double funktion3(double c)
    {
    	double zahl1,zahl2,ergebniss;
    
    	printf("\n\nMultiplikation! Geben sie bitte Zahl1 ein : ");
    	scanf("%lf",&zahl1);
    	printf("\nGeben sie bitte Zahl2 ein : ");
    	scanf("%lf",&zahl2);
    	ergebniss=zahl1*zahl2;
    	return ergebniss;
    }
    double funktion4(double d)
    
    {
    	double zahl1,zahl2,ergebniss;
    
    	printf("\n\nDivision! Geben sie bitte Zahl1 ein : ");
    	scanf("%lf",&zahl1);
    	printf("\nGeben sie bitte Zahl2 ein : ");
    	scanf("%lf",&zahl2);
    	ergebniss=zahl1/zahl2;
    	return ergebniss;
    }
    

    Das Problem bei dem Programm ist, wenn es sich wiederholt kommt 2mal Hintereinander dieser Text:

    Geben sie bitte die Rechenart ein
    +=Additionsrechnung
    -=Subtraktionsrechnung
    *=;Multiplikationsrechnung
    /=Divisionsrechnung
    q=Beenden

    Ihre Eingabe: a

    Falsch Eingabe!
    Geben sie bitte die Rechenart ein
    +=Additionsrechnung
    -=Subtraktionsrechnung
    *=;Multiplikationsrechnung
    /=Divisionsrechnung
    q=Beenden

    Ihre Eingabe:
    Falsch Eingabe!
    Geben sie bitte die Rechenart ein
    +=Additionsrechnung
    -=Subtraktionsrechnung
    *=;Multiplikationsrechnung
    /=Divisionsrechnung
    q=Beenden

    Ihre Eingabe:



  • hab das problem gelöst indem ich

    case'+':

    ergebniss=funktion1(rechnung);
    printf("\nDas Ergebniss der Addition : %lf\n\n",ergebniss);
    scanf("%c",&wenn);

    break;

    am ende jeder case verzweinungs ein scanf mache aber dies ergibt keinen sinn da nichtmal eine eingabe gefordert wird
    :S

    ich versteh das nich o0 help plox



  • Dein Tastaturpuffer ist nach der Berechnung nicht leer, das

    scanf("%lf",&zahl2);
    

    läßt wohl noch was im Puffer, den erst ein weiteres scanf ausleert.
    Alternativ könntest Du eine Minifunktion schreiben und aufrufen, die per getch bis zum "\n" liest.
    EDIT: Achja, war ja kürzlich hier zu lesen 😃


Log in to reply