Я пытаюсь заставить эту программу показать мне, что когда я решаю задачу сложения, вычитания, умножения или деления, она даст мне ответ. Однако это не работает, может кто-нибудь помочь.
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, "iont);
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", "iont);
else
printf("Error");
}
Никакого отношения к C++ тоже не имеет
Отредактировал заголовок, сохранил C++, поскольку он является действительный код C++ ... (и Майк может не знать разницы.)





Вы неправильно написали частное.
На самом деле, не передавайте адрес своих аргументов в printf. Вам нужно сделать это только для scanf. Сделайте, например, printf ("Ответ =% f \ n", частное);
Эээ, и все это если ... иначе, если ... в конце все просто шатко. Выньте это.
И почему вы сканируете результаты своих расчетов? Убери и это тоже.
Чего вы пытаетесь достичь с помощью этой строчки?
scanf("%f %f %f %f", &sum, &difference, &product, "iont);
Это берет четыре числа от пользователя и загружает их в четыре переменные соответственно. Сразу после этой строки вы присваиваете новые значения этим четырем переменным, поэтому нет смысла загружать их значениями в этой строке кода.
Кроме того, в чем смысл следующего заявления 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 как char (символ) вместо int и попросил бы пользователя ввести один из этих четырех символов, которые будут назначены переменной 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,2,3,4 для каждого из сложения, вычитания, умножения и деления.
#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());
}
==, а не =. Вы также разрушили логику калькулятора. После if нельзя ставить точку с запятой, если вы ожидаете, что они на что-нибудь повлияют. И почему вы возвращаете ад, из main, результат вызова mainбез аргументов? !! (Также conio.h нестандартен.)
Сладкий Иисус. Я сожалею, что в такие времена нет «Зала стыда за переполнение стека».
Отмечено как не специфичное для UNIX. Кому-то нужно отредактировать заголовок (если это возможно?), Так как это тоже не имеет отношения к Putty ...