Простая калькуляторная программа на C / C ++ - PullRequest
1 голос
/ 07 ноября 2008

Я пытаюсь заставить эту программу дать мне выход, который, когда я делаю задачу сложения, вычитания, умножения или деления, дает мне ответ. Однако, это не работает, может кто-нибудь помочь.

int main ()
{  
  int choice;  
  float a, b;  
  float sum;  
  float difference;
  float product;
  float quotiont;

  printf("This program adds, subtracts, multiplies, and divides.\n");  
  printf("**************\n");  
  printf("* Calculator *\n");  
  printf("**************\n");  
  printf("Enter an expression: ");  
  scanf("%f %f", &a, &b);  
  scanf("%f %f %f %f", &sum, &difference, &product, &quotiont);  

  sum = a + b;  
  difference = a - b;  
  product = a * b;  
  quotiont = a / b;  

  if(a + b)  
      printf("Answer = %f\n", &sum);  
  else if(a - b)  
      printf("Answer = %f\n", &difference);  
  else if(a * b)  
      printf("Answer = %f\n", &product);  
  else if(a / b)  
      printf("Answer = %f\n", &quotiont);  
  else  
      printf("Error");  
}

Ответы [ 3 ]

13 голосов
/ 07 ноября 2008

Чего вы пытаетесь достичь с помощью этой строки?

scanf("%f %f %f %f", &sum, &difference, &product, &quotiont);  

Для этого нужно взять четыре числа у пользователя и загрузить их в четыре переменные соответственно. Сразу после этой строки вы присваиваете новые значения этим четырем переменным, поэтому нет смысла загружать их значениями в этой строке кода.

Кроме того, какой смысл в следующем if утверждении? (И все else if заявления)

if(a + b)
    printf("Answer = %f\n", &sum);

Ответ будет напечатан только в том случае, если сумма a и b не равна нулю. Если выражение в скобках после 'if' будет равно нулю, оно не выполнит код внизу. Если он оценивается как ненулевое значение, он выполнит код.

Другая проблема с приведенной выше строкой заключается в том, что вы передаете указатель на переменную sum в функцию printf () вместо фактического значения переменной sum. «& sum» возвращает адрес памяти переменной, но «sum» возвращает фактическое значение переменной. Так должно выглядеть так:

printf("Answer = %f\n", sum);
<ч />

Я заметил, что вы определили переменную choice в верхней части вашей программы, но никогда не использовали ее. Из-за этого и вашей цепочки операторов else if я предполагаю, что вы хотите дать пользователю выбор: добавлять, вычитать, умножать или делить.

Чтобы сделать это, я бы определил choice как символ (символ) вместо целого и заставил бы пользователя ввести один из этих четырех символов, которые будут назначены переменной choice: '+ ',' - ',' * 'или' / '.

Чтобы определить choice как символ, напишите:

char choice;

Затем попросите пользователя ввести такой выбор:

scanf("%c", &choice);

Это берет один символ от пользователя и присваивает его choice.

Наконец, измените ваши if утверждения на что-то вроде этого:

if (choice == '+')
    printf("Answer = %f\n", sum);
else if (choice == '-')
    printf("Answer = %f\n", difference);
else
    printf("Error: invalid choice.\n");

Вы также можете использовать для этого оператор switch.

1 голос
/ 07 ноября 2008

Вы указали коэффициент с ошибкой.

На самом деле, не передавайте адрес ваших аргументов в printf. Вам нужно сделать это только для scanf. Сделайте, например, printf ("Ответ =% f \ n", частное);

Э-э, и все в целом, если ... еще, если ... вещь в конце просто отвратительна. Возьми это.

А почему вы сканируете результаты ваших расчетов? Возьми это тоже.

0 голосов
/ 16 июля 2013
#include<stdio.h>
#include<conio.h>


int main ()
{   
    int choice;  
    float a, b;  
    float sum;  
    float difference;
    float product;
    float quotiont;

    printf("This program adds, subtracts, multiplies, and divides.\n");  
    printf("**************\n");  
    printf("* Calculator *\n");  
    printf("**************\n");  
    printf("Enter thee value of a: ");  
    scanf("%f",&a);
    printf("Enter the value of y:");
    scanf("%f",&b);
    sum=a+b;
    if (sum = a + b);  
        printf("sum is %f",sum);

    difference = a - b;  
    if(difference=a-b)
        printf("\n difference is %f",difference);

    product = a * b;  
    if(product=a*b)
        printf("\n product is %f",product);

    quotient = a / b;  
    if(quotient=a/b)
    printf("\n quotient is %f",quotient);

    return(main());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...