Как сделать так, чтобы мои переменные не сохранили свое значение после выполнения? - PullRequest
0 голосов
/ 23 января 2019

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

int main()
{
int choice, sum = 0, n, num, count = 0, a;


do {
    cout << "1. Sum of first 10 natural numbers" << endl;
    cout << "2. Sum of n natural numbers" << endl;
    cout << "3. Prime number check" << endl;
    cout << "4. Exit" << endl;
    cout << "Enter your choice" << endl;
    cin >> choice;


    switch (choice)
    {
        case 1: {
            for (int i = 1; i <= 10; ++i) {
                sum += i;
            }
            cout << "Sum of first 10 natural numbers =" << sum << endl;
            break;
        }

        case 2: {
                cout << "Enter a positive integer: ";
            cin >> n;
            for (int i = 1; i <= n; ++i) {
                sum += i;
            }
            cout << "Sum of first " << n << "natural numbers =" << sum << endl;
            break;
        }
        case 3: {
            cout << "Enter number to be checked : ";
            cin >> num;
            if (num == 0 || num < 0) {
                cout << "\n" << num << " is not prime." << endl;
            }
            else {
                for (a = 2; a < num; a++)
                    if (num % a == 0)
                        count++;
            }
            if (count > 1)
                cout << "\n" << num << " is not prime." << endl;
            else
                cout << "\n" << num << " is prime." << endl;
            break;
        }
    }
} while (choice < 4);
}

, поэтому, если я выберу опцию 2 и введу 5, код выдаст правильный ответ как 15, но если я выберу опцию 2и снова введите 5, получится 30, а если я сделаю это снова, то получится 45. То же самое касается и другого.Добавляет предыдущий результат к текущему.

1 Ответ

0 голосов
/ 23 января 2019

Вы не сбрасываете свою переменную суммы в ноль до / после выполнения своих вычислений, чтобы она продолжала накапливаться. Попробуйте sum = 0 перед вашим оператором switch.

cout << "Enter your choice" << endl;
cin >> choice;

sum = 0;

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