Помоги пожалуйста с рекурсией

Здравствуйте, пишу второй раз уже. Потому что на этом форуме программистов и профессионалов мне так и не оказали никакой существенной помощи. А мне на самом деле нужно разобраться, готов заплатить деньги только помогите мне, помогите разобраться с рекурсией. Мне нужно чтобы функция при ее ошибке запускала саму себя повторно. Вот код.

include <iostream>

char c;
using namespace std;
int function(int*a,int*b)
{
    cout << "Программа switch ";
    cout << "\n";
}
int main(int a,int b)
{
        function(&a,&b);
        cout << "Ввод: ";

        cin  >> c;

             switch(c)
             {
                      case '1':
                           {
                               cout << "Это первый кейс! " << endl;
                               break;
                           }
                      case '2':
                           {
                               cout << "Это второй кейс! " << endl;
                               break;
                           }
                           default:
                                   cout << "Неверный ввод! " << endl;
                                   main(a,b);
             }

system("pause");
return 0;
}

Проблема тут вот в чем, когда вводится неверный кейс такого плана qwert то выполняется условие default 5 раз. Если вводится qwertqwert то условие default будет выполняться 10 раз, Вопрос: как сделать чтобы вводе любого неверного значения, условие default выполнялось один раз и при этом возвращала функцию на начальную позицию. Я не понимаю в чем проблема, или в рекурсии то что нельзя указывать main в виде рекурсии или еще в чем. Прошу помочь мне в этом вопросе.

Потому что программа при вводе одного неверного символа переходит на начало функции main().

Сделайте переменную c не char, а int. И в switch пишите кейсы без кавычек.

int c;
cin >> c;

switch (c) {
    case 1:
        // ...
    case 2:
        // ...
    default:
        // ...
}

Alex, сделал. Работает, теперь при вводе случайных символов, надо также выводить один раз неверное условие и один раз возвращать main(). Вопрос как это сделать?

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.