Почему не работает 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 > sea; switch (sea) { case 1: manager(); break;
} system("pause"); return 0; } void manager(){ cout > choise; switch (choise) { case 1: add_animal(); break; case 2: show(); break; } return; } void add_animal(){ int i; for (i = 0; i > 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 << endl; } } return; }
Проблема здесь в том, что при условии 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().
Проблема здесь в том, что при условии 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().