Zeichen als Operator setzen



  • hi,
    ich versuch mir gerade c beizubringen und faile gerade hart an einem versuch einen primitiven taschenrechner zu programmieren. dieser sollte zwei zahlen und eine standart rechenoperation verbinden können.
    nun stehe ich vor dem Problem, dass ich das gewünschte zeichen (also +,-,*,/) einlesen will, und damit dann eben das ergebnis bestimmen will. beim fettgedruckten und unterstrichenem liegt das problem. kann mir da vll jemand helfen?

    #include <stdio.h>
    
    int main()
    {
        float zahl1, zahl2,ergebnis;
        char zeichen;
    
        printf("bitte die erste zahl eingeben"); /*einlesen der erste zahl*/
        scanf ("%f",&zahl1);
    
        printf ("bitte die zweite zahl eingeben"); /*einlesen der zweiten zahl*/
        scanf ("%f",&zahl2);
    
        printf ("bitte das rechenzeichen eigeben"); /*einlesen des rechenzeichens*/
        scanf("%c",&zeichen);
    
      [b] [u] ergebnis=zahl1[zeichen]zahl2[/u][/b];   /*an dieser stelle möchte ich dass das eingelesene rechnezeichen, also funktion für die anweisung verstanden wird*/
    
        printf ("%f %c %f = %f",zahl1,zeichen,zahl2,ergebnis); /*nur noch zu kontrolle was ich eingegeben hab...*/
    
        return 0;
    
    }
    

    ps: ja ich hab die sufu benutzt und auch sonst schon rumgesurft, bin aber leider nicht fündig geworden



  • Nein, du kannst die zu verwendende Rechenoperation nicht in eine Variable packen und vom Programm erwarten, daß es sie von dort aus ausführt.

    Was möglich wäre, ist eine Auwahl über switch() (oder eventuell einige komplizierte Basteleien mit Funktionszeiger-Arrays):

    switch(zeichen)
    {
      case '+': ergebnis = zahl1 + zahl2; break;
      case '-': ergebnis = zahl1 - zahl2; break;
      case '*': ergebnis = zahl1 * zahl2; break;
      case '/': ergebnis = zahl1 / zahl2; break;
      cefault:  ergebnis = -1; printf("ungültige Operation\n");
    }
    


  • alles klar, vielen dank 👍


Log in to reply