2008-11-07 3 views
1

Я пытаюсь заставить эту программу дать мне понять, что когда я выполняю задачу сложения, вычитания, умножения или деления, это даст мне ответ. Тем не менее, он не работает, кто-нибудь может помочь.Простая программа калькулятора в C/C++

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"); 
} 
+0

Ретушь как не специфическая для UNIX. Кто-то должен отредактировать заголовок (если это возможно?), Так как это не имеет ничего общего с Putty либо ... – 2008-11-07 03:48:28

+0

Ничего общего с C++ либо – 2008-11-07 03:49:18

+0

Отредактировано название, сохранило C++, так как оно * является допустимым кодом C++ ... (и Майк, возможно, не знает разницы.) – 2008-11-07 04:05:32

ответ

1

У вас есть орфографический фактор.

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

Э-э, и это целое, если ... еще, если ... вещь в конце всего лишь воинственная. Вытащите его.

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

13

Что вы пытаетесь выполнить с помощью этой линии?

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 заявление для этого.

-2
#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()); 
} 
Смежные вопросы