Рекурсия не сохраняет новое значение переменной C++
Пытался написать защиту от дурака. Если пользователь ввёл неправильное значение, то оно сохраняется в переменной task до самого завершения программы. А значение переменной должно перезаписываться на новое введенное пользователем после удаления при новом проходе рекурсии. Хотя код не выводит ошибок в visual studio. Почему так происходит и как это исправить?
void choice() {
int* task = new int;
printf("What are we going to do /\n\t1. Encoding\n\t2. Decoding\nSelect 1 or 2: ");
cin >> *task;
gets_s(string);
if (*task == 1) {
encode();
}
else if (*task == 2) {
decode();
}
else {
printf("please key in 1 or 2 , try it again\n");
delete task;
choice();
}
}
Ответы (1 шт):
Автор решения: DmitryK
→ Ссылка
Проще сделать цикл запроса правильного выбора, чем рекурсивно запускать функцию.
cout << "What are we going to do /\n\t1. Encoding\n\t2. Decoding\n\t3. Exit\nSelect 1, 2 or 3: ";
int choice;
while(true)
{
cin >> choice;
if(choice == 3) return 0;
if(choice > 0 && choice < 3)
break;
cout << "\nWrong choice!\nEnter 1, 2 or 3: ";
}
