#include <stdio.h>
#include <math.h>

static int zahl;

int addition(int zahl)
{
 int y;
 printf("%d+>",zahl);
 scanf("%d",&y);
 fflush(stdin);
 return zahl+=y;
}

int subtraktion(int zahl)
 {
 int y;
 printf("%d->",zahl);
 scanf("%d",&y);
 fflush(stdin);
 return zahl-=y;
}

int division(int zahl)
{
 int y;
 printf("%d/>",zahl);
 scanf("%d",&y);
 fflush(stdin);
 return zahl/=y;
}

int multiplikation(int zahl)
{
 int y;
 printf("%d*>",zahl);
 scanf("%d",&y);
 fflush(stdin);
 return zahl*=y;
}

int sqrtw(int zahl)
{
 double x=sqrt((double)zahl);
 printf("(sqrt)%f>",x);
 return (int)x;
}


int (*rechenfunk[]) (int) = { addition, subtraktion,
                              division, multiplikation,
                              sqrtw };

int main()
{
 char op;

 printf("no.>");
 scanf("%d",&zahl);
 do {
      printf(" op>");
      scanf("%c",&op);
      fflush(stdin);
      switch(op)
       {
        case '+': printf("%d",zahl=(*rechenfunk[0])(zahl));   break;
        case '-': printf("%d",zahl=(*rechenfunk[1])(zahl));    break;
        case '/': printf("%d",zahl=(*rechenfunk[2])(zahl));    break;
        case '*': printf("%d",zahl=(*rechenfunk[3])(zahl));    break;
        case 'q': printf("%d",zahl=(*rechenfunk[4])(zahl));   break;
        default : printf("op '=','+','-','/','*','q'\n");                      break;
       }
    } while(op != '=');

 printf("Gesamtergebnis=%d\n",zahl);

 return 0;
}
