Некорректное выполнение программы
Когда я ввожу 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 шт):
Я попробовал воспользоваться приложенным кодом и все работает исправно. Хочу добавить пару моментов про ваш код.
Вместо этой конструкции:
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 не написан). Я не представляю где у вас может возникать ошибка из такого малого количества данных, так что рекомендую воспользоваться дебагом