taschenrechner programmieren????komme nicht weiter



  • Grüßt euch leute,
    ich sollte in der übung ein taschenrechner programmieren!
    also die aufgabe war, das man die ganze rechen aufgabe schreibt, und das program rechnet es halt dann aus.
    die aufgabe kann man so schreiben wie man möchte, also zwischen den zahlen können auch buchstaben sein, das program filtert nur die zahlen und das operanten aus!

    Ich habe es mir so überlegt das ich die einzelnen zahlen und operanten mit ne scheife rauspicke!!
    das rauspicken hat geklappt nur jetzt weiß ich nicht wie ich mit den zahlen rechnen könnte.

    ::::hier ist der code::::

    #include <stdio.h>
    #include <stdlib.h>
    int main(void)
    {
    
    	char aufgabe[100];
    	char zeichen[100];
    	int i,z;
    	int ziffer[100];
    	i=0;
    	z=0;
    
    	//rechenaufgabe einscannen
    	printf("\n\t\tTaschenrechner! \n\n");
    	printf("\tbitte rechenaufgabe eingeben: ");  gets(aufgabe); 
    
    	//zahlen werden entsprechenden zugewiesen
    	while(aufgabe[i] != '\0')
    	{
    		if(aufgabe[i] < 48 || aufgabe[i] > 57)
    		{
    			printf("");
    			i++;
    		}
    		else
    		{
    			ziffer[i] = aufgabe[i];
    			i++;
    		}
    
    		if(aufgabe[i]==42 || aufgabe[i]==43 || aufgabe[i]==45 || aufgabe[i]==47)
    		{
    			zeichen[z]=aufgabe[i];
    			i++;
    		}
    
    	}
    
    	//... ab hier komm ich nicht weiter
    
    	printf("\n");
    	return EXIT_SUCCESS;		
    }
    

    würde mich freuen wenn ihr mir weiterhelfen würdet.

    Gruß



  • hi!
    hier ein tipp:

    #include <math.h>
    #include <stdio.h>
    
    int main()
    {
    	double a,b, ergebnis=0;
    	char _operator[] = "+-*/:^", op;
    	printf(" *** Agga Ugga Calculator Version 0.1 Beta *** \n\n\n" );
    
    	printf("Unterst\x9Atzte Operatoren: "
    						"[%s] Bereit zur Eingabe.\n\n", _operator );
    
    	if ( 3 != scanf("%lf %c %lf", &a, &op, &b ) )
    	{
    		puts("Fehlerhafte Eingabe."); return 1;
    	}
    
    	if ( NULL == strchr( _operator, op ) )
    	{
    		printf("Operator %c wird nicht unterstuetzt.", op ); return 1;
    	}
    
    	switch( op )
    	{
    		case '+':
    			ergebnis = a + b;
    		break;
    
    		case '-':
    			ergebnis = a - b;
    		break;
    
    		case '*':
    			ergebnis = a * b;
    		break;
    
    		case '/':
    			ergebnis = a / b;
    		break;
    
    		case ':':
    			ergebnis = a / b;
    		break;
    
    		case '^':
    			ergebnis = pow(a,b);
    		break;
    
    	}
    
    	printf("%lf %c %lf = %lf\n", a, op, b, ergebnis );
    
    	return 0;
    }
    

    🙂



  • int main () 
    {
      double a,b;
      char op;
    
      scanf("%lf %c %lf", &a, &op, &b);
    
      printf ("%lf %c %lf = %lf\n",
              a, op, b,  
              op=='+' ? a+b : 
              op=='-' ? a-b : 
              op=='*' ? a*b :
              op=='/' || op==':' ? a/b :
              op=='^' ? pow(a,b) :
              0);
    }
    


  • danke für eure hilfe. wow, ich hab ja richtig kompliziert gedacht!!!
    aber mit euren könnten man jetzt nicht 3zahlen mit einander addieren, man müsste das wieder extra rein programmieren

    @agga ugga
    danke mein freund!!!
    aber ich habe diese stelle nicht verstanden, was du hier gemacht hast

    ______
         V
    if ( 3 != scanf("%lf %c %lf", &a, &op, &b ) )
        {
            puts("Fehlerhafte Eingabe."); return 1;
        }
    

    ich verstehe nicht warum du hier so "3!=..." gemacht hast!!!
    wäre dir sehr dankbar für die erklärung.

    @nochn tipp
    😃 😃 danke!!!



  • naja, scanf liest alles ein, bis der Nutzer Enterdrückt.
    als Parameter hat Agga Ugga angegeben:
    %lf %c %lf"

    das heißt, er füllt erst die erste Zahl, bis ein Leerzeichen kommt, dann den Character, und dann die 2. Zahl.

    -> Das heißt es werden GENAU 3 Eingaben erwartet.

    Also, was passiert wohl, wenn der Nutzer schon nach der ersten Zahl Enter drückt?
    dann gibt scanf 1 zurück, da ja nur einer von 3 Parametern eingelesen wurde.

    Also im allgemeinen verhindert das 3 != scanf(...) nur, dass der Nutzer zu wenige Angaben macht.



  • fecub schrieb:

    aber mit euren könnten man jetzt nicht 3zahlen mit einander addieren, man müsste das wieder extra rein programmieren

    stimmt, mit mehr als 2 zahlen wird das umfangreicher.



  • nochmals danke, ihr ward mir eine sehr große hilfe!!!!

    gruß
    fecub


Anmelden zum Antworten