2016-09-05 4 views
3

Я хочу программку основного калькулятора в C: У меня есть проблема с аккумулятором (с «+» и «-» операторы)Calculator (аккумулятор) на языке программирования C

int main(void) 
{ 
    float num1,num2,res; 
    char operator; 

    printf ("Type in your expression.\n"); 
    scanf ("%f %c %f", &num1, &operator, &num2); 

    if(operator == 'S'){ 
     printf(" = %.2f\n",num1); 
     res = num1; 
     while(1){ 
      printf ("Type in your expression.\n"); 
      scanf ("%c %f", &operator, &num2); 
      if(operator == '+'){ 
       res += num2; 
       printf("%.2f\n", res); 
      } 
      else if(operator == '-'){ 
       res -=num2; 
       printf("%.2f\n",res); 
      } 
      else if(operator == '*'){ 
       res *=num2; 
       printf("%.2f\n",res); 
      } 
      else if(operator == '/'){ 
       if(num2 == 0) 
        printf("Division by zero\n"); 
       else 
        res /=num2; 
        printf("%.2f\n",res); 

      } 
      else if(operator == 'E'){ 
       printf("End of the calculation:"); 
       printf("%.2f",res); 
       break; 

      } 
     }  
    } 

В этой части код деления и умножения работает нормально: Но когда i tipp smth нравится «+3» или «-2» во время аккумулятора, ничего не происходит. Я не могу понять, где проблема.

+0

См. [Ask]. Что говорит отладчик? – Olaf

ответ

1

Я думаю, что это потому, что в следующей команде:

scanf ("%c %f", &operator, &num2); 

При вводе +3 в то время как программа ожидает читать оператора и номер, затрачиваемое +3 как число, а не + как оператор и 3 в виде числа. Так что вам нужно дать + 3 (с разнесением по кругу). Я попробовал, и я думаю, что это работает!

+0

Спасибо за ответ! –

1

%c не пропускает пробел автоматически. Изменение сканирования строки формата в:

 scanf (" %c%f", &operator, &num2); 

Это вставит первый не белый пробел в operator.

+0

Спасибо за ответ! –

Смежные вопросы