Как я могу предупредить пользователя моей программы, что он ввел ошибку в условии математической задачи?

Моя программа должна предупреждать пользователей, когда они вводят "+/*" подряд или символы, которые нельзя использовать в задаче (например, буквы или символы '%"@' и т. д.), или подобные ошибки. И еще вопрос как закинуть все в цикл на повторный ввод задачи? Результат должен быть примерно таким:

Enter the task: 5+*3-(3+2)

Sorry, you have a mistake in you task, try again: 5ga3-(3+2)

Sorry, you have a mistake in you task, try again: 5+3-(3+2)

Result: 3

Вот мой код:

#include <iostream>

using namespace std;

float task();
float factor();
float brackets();
float number();

int main()
{
    cout << "Enter the task: ";
    float res = task();
    cout << "Result: " << res << endl;
}

float task()
{
    float x = factor();
    for (;;)
    {
        char c = cin.get();
        if (c == '*')
            cout << "ahuenno)";
        switch (c)
        {
        case '+':
            x += factor();
            break;
        case '-':
            x -= factor();
            break;
        default:
            cin.putback(c);
            return x;
        }
    }
}

float factor()
{
    float x = brackets();
    for (;;)
    {
        char c = cin.get();
        if (c == '*')
            cout << "ahuenno)";
        switch (c)
        {
        case '*':
            x *= brackets();
            break;
        case '/':
            x /= brackets();
            break;
        case '^':
            x = pow(x, brackets());
            break;
        default:
            cin.putback(c);
            return x;
        }
    }
}

float brackets()
{
    char c = cin.get();
    if (c == '(')
    {
        float x = task();
        cin.get();
        return x;
    }
    else
    {
        cin.putback(c);
        return number();
    }
}

float number()
{
    float res = 0;
    for (;;)
    {
        char c = cin.get();
        if (c >= '0' && c <= '9')
            res = res * 10 + c - '0';
        else
        {
             cin.putback(c);
                return res;
        }
     }
}

Ответы (0 шт):