Делай пока программирование функции С
Я создал простую программу калькулятора, используя операторы switch, которая была успешной. Но у меня возникают проблемы с созданием цикла do while в нижней части, который повторяет созданную мной функцию калькулятора, и это моя главная цель - спросить пользователя, не хотят ли они повторить программу калькулятора, используя цикл do while. Любая помощь с оценкой.
#include <stdio.h>
char math;
float number1;
float number2;
void calculator();
int selection = 0;
int main()
{
void calculator(){
printf(" enter the math operation: ");
scanf("%c", &math);
printf("Enter two numbers: ");
scanf("%f%f", &number1, &number2);
switch(math)
{
case '+':
printf("number1+number2=%.2f",number1+number2);
break;
case '/':
printf("number1/number2=%.2f",number1/number2);
break;
case '-':
printf("number1-number2=%.2f",number1-number2);
break;
case '*':
printf("number1*number2=%.2f",number1*number2);
break;
default:
printf ("Wrong character entered.");
}
}
Запуск функции do while, которая спрашивает пользователя, хочет ли он повторить программу.
do{
printf{"\n\n - Do you want to repeat the program?"};
printf("\n1 - Yes");
printf("\n2 - No");
scanf("%i", &selection );
}
while (selection != 2);
calculator();
return 0;
}
5 ответов
Чтобы просто ответить на главный вопрос, вы всегда должны сначала запустить калькулятор в цикле, а затем попросить снова запустить:
void calculator() {
// calc stuff here
}
int main() {
do {
calculator();
printf("\n\n - Do you want to repeat the program?");
printf("\n1 - Yes");
printf("\n2 - No");
scanf("%i", &selection );
} while (selection != 2);
}
Во -первых, я рекомендовал поместить определение функции calculator () вне функции main ()
во-вторых, я рекомендовал не использовать глобальную переменную, если это возможно. Просто поместите декларацию вашего selection
переменная в функцию main () и объявление math, number1, number2
переменные в калькуляторе функций ()
В-третьих (этот ответ действительно отвечает на ваш вопрос), вызовите функцию calculator () внутри цикла do{}while
- Невозможно определить функцию с помощью функции. Переехать
void calculator(){
и его тело за пределамиmain()
,
2 Всегда проверяйте результат scanf()
,
3 Вставьте пробел перед %c
потреблять предыдущие EOL.
scanf(" %c", &math);
,
4 хода calculator();
в цикл while, предложенный @Josh B & @koodawg
Ваш вызов для калькулятора помещается в while.but, он должен быть помещен в do.because, do stmt выполняется до while.so, хорошо, если вы поместите вызов функции calculator() внутри цикла do
Вы звоните в калькулятор не в том месте, вам нужно;
do {
calculator();
...
} while(sel != 2);