Делай пока программирование функции С

Я создал простую программу калькулятора, используя операторы 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

  1. Невозможно определить функцию с помощью функции. Переехать 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);
Другие вопросы по тегам