Почему не работает return? Привет!
Взялся за задание, которое нашел в просторах сети и я [s]немного[/s] очень сильно запутался.
Задание: сделать терминал управления зоомагазином, использовать классы.
Мой вопрос: почему оператор return не возвращает к функции, которая вызвала функцию, которая вызвала return? (Как закрутил, извиняюсь)
Забыл написать в чем ошибка: программа доходит до функции input(); и закрывается, хотя должна вернуться обратно в меню. #include
using namespace std;
const int SIZE = 10;
class zoo {
public:
char name[25];
char animal[25];
int cost;
void input();
}anim[SIZE];
void manager(), show(), add_animal();
int main() {
cout << "Hello, it's ZooCoo! Please choose the action. Who are u?\n\n" <> sea;
switch (sea)
{
case 1: manager(); break;

}
system("pause");
return 0;
}
void manager(){
cout << "Hello, MANAGER!\n Choose action\n" <> choise;
switch (choise)
{
case 1: add_animal();
break;
case 2: show(); break;
}
return;
}
void add_animal(){
int i;
for (i = 0; i < SIZE; ++i){

if (!anim[i].animal) break;
if (i == SIZE){ cout << "Its full"; return; }


}
anim[i].input();
return;
}
void zoo::input(){
cout <> animal;
cout <> name;
cout <> cost;
return;
}
void show(){
int i;
for (i = 0; i < SIZE; i++){
if (anim[i].animal){
cout << "\nAnimal\t" << anim[i].animal <<
"\nName\t" << anim[i].name <<
"\nCost\t" << anim[i].cost <

21 Авг 2019 в 07:08
216 +1
0
Ответы
1

Проблема здесь в том, что при условии if (i == SIZE) в функции add_animal(), вы не должны использовать break, так как это выходит из цикла, не проверяя последнее условие. Вместо этого вы можете просто выйти из функции с помощью return. Попробуйте изменить ваш код следующим образом:

void add_animal(){
int i;
for (i = 0; i < SIZE; ++i){
if (!anim[i].animal) break;
}
if (i == SIZE){
cout << "Its full";
return;
}
anim[i].input();
return;
}

Теперь программа должна корректно возвращаться в меню после выполнения функции add_animal().

20 Апр 2024 в 13:06
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир