Некорректное выполнение программы

Когда я ввожу 1, выполняется функция n1(), однако при вводе 2 программа завершается с кодом 0 и я не понимаю почему, вот код:

#include <iostream>
using namespace std;

void n1() {

    setlocale(LC_ALL, "Russian");
    int out;
    float a, b, c;
    cout << "Введите длину прямоугольника: ";
    cin >> a;
    system("cls");
    cout << "Введите ширину прямоугольника: ";
    cin >> b;
    system("cls");
    c = a * b;
    cout << "Площадь прямоугольника равняется " << c << "";


}
void n2() {
    float kilo, funt;
    cin >> funt;
    cout << "Введите количество фунт: ";
    kilo = funt * 0.45;
    cout << funt << " в килограмах " << kilo;
}
int menu()
{
    setlocale(LC_ALL, "Russian");
    int vibor;
    cout << "1) Вычислить площадь прямоугольника\n\n";
    cout << "2) Перевод фунтов в килограммы\n\n";
    cout << "3) Рассчитать величину дохода\n\n";
    cout << "4) Вычислить площадь кольца\n\n\n";
    cin >> vibor;
    system("cls");
    if (vibor == 1) 
    {
        n1();
        
    }
    if (vibor == 2)
    {
        n2();
    }

}

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

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

Я попробовал воспользоваться приложенным кодом и все работает исправно. Хочу добавить пару моментов про ваш код.

Вместо этой конструкции:

if (vibor == 1) 
{
    n1();
}
if (vibor == 2)
{
    n2();
}

Правильнее будет использовать switch:

switch(vibor){
    case 1: {
       n1();
       break;
    }
    case 2: {
       n2();
       break;
    }
}

А также в функции n2() изначально нужно вывести на экран надпись (cout), а лишь потом делать ввод (cin)

Касательно вашей проблемы, код 0 означает, что программа выполнилась корректно т.е. дошла до return 0 в функции main (до конца функции main в случае, если return 0 не написан). Я не представляю где у вас может возникать ошибка из такого малого количества данных, так что рекомендую воспользоваться дебагом

→ Ссылка