Почему после выбора суммы вклада предлагает ввести новую сумму вклада вместо отображения меню

При выборе 1 пункта пользователю предлагается показать текущую сумму вклада. При выборе 2 – соответственно ввести новую сумму вклада. При выборе 3 – соответственно выход из программы.

Код который я использовал:

//Program writed with error when choose 1 after it progrum should output menu instead entering new sum of conribution
#include <iostream>
#include <string>

using namespace std;

int main() {
    int contribution;
    char choose;

    cout << "Hello I don't know what I'm doing but still" << endl;
    cout << "Enter sum of contribution in bank:";
    cin >> contribution;
    cout << endl;
    while (true) {
        system("cls");
        cout << "What you what to do" << endl;
        cout << "1.Show sum of contribution" << endl;
        cout << "2.Change sum of contribution" << endl;
        cout << "3.Exit" << endl << endl;
        cin >> choose;

        switch (choose) {
        case '1':
            cout << "Sum of cintribution:" << contribution << endl;
            system("pause");
        case '2':
            cout << "Enter new sum of contribution:";
            cin >> contribution;
            cout << "New sum of of contrubution is " << contribution << endl;
        case '3':
            cout << "Have a good day!";
            break;
        default:
            cout << "choose 1 2 or 3";
        }
    }
}

Почему после выбора суммы вклада предлагает ввести новую сумму вклада вместо отображения меню


Ответы (1 шт):

Автор решения: Zhihar

потому что case надо разделять через break иначе они будут выполняться один за другим

    case '1':
        cout << "Sum of cintribution:" << contribution << endl;
        system("pause");
        break;
    case '2':
        cout << "Enter new sum of contribution:";
        cin >> contribution;
        cout << "New sum of of contrubution is " << contribution << endl;
        break;
    case '3':
        cout << "Have a good day!";
        break;
    default:

Кстати при выборе 3 не происходит никакого выхода и надо хотя бы так реализовать:

while (true) {
    // ...
    bool isExit == false;
    switch (choose) {
    case '3':
        cout << "Have a good day!";
        isExit = true;
        break;
    default:
        cout << "choose 1 2 or 3";
    }
    if (isExit == true)
        break;
}
→ Ссылка