Задать вопрос
8 мая, 19:57

Дано N строк. Вывести для каждой строки Good, если она - правильное скобочное выражение и Bad, если нет.

+5
Ответы (1)
  1. 8 мая, 23:10
    0
    Для проверки, закрыты ли все скобки, можно было бы просто их посчитать, но мы будем проверять правильность вложенности. Для этого нам пригодится std::stack (да, и решаем на С++).

    #include

    #include

    #include

    using namespace std;

    typedef unsigned short int USI;

    bool hasCorrectBracing (string) ;

    int main ()

    {

    setlocale (0, "") ; / / кириллица

    USI N;

    cout << "N = ";

    cin >> N;

    string row;

    for (size_t i = 1; i < = N; i++)

    {

    cout << "Строка " << i << ": ";

    cin >> row;

    if (hasCorrectBracing (row))

    {

    cout << "Good/n";

    }

    else

    {

    cout < "Bad/n";

    }

    }

    return 0;

    }

    bool hasCorrectBracing (string r)

    {

    stack st;

    for (string::size_type c = 0;

    c < r. size () ;

    c++)

    {

    if (r[c] = = ' (')

    {

    st. push (' (') ;

    continue;

    }

    else

    {

    if (r[c] = = '[')

    {

    st. push ('[') ;

    continue;

    }

    else

    {

    if (r[c] = = '{')

    {

    st. push ('{') ;

    continue;

    }

    }

    } / / end 1st if

    if

    (

    (

    (st. top () = = ' (')

    &&

    (r[c] = = ') ')

    )

    ||

    (

    (st. top () = = '[')

    &&

    (r[c] = = ']')

    )

    ||

    (

    (st. top () = = '{')

    &&

    (r[c] = = '}')

    )

    )

    {

    st. pop () ;

    } / / end 2nd if

    } / / end for

    if (st. empty ())

    {

    return true;

    }

    else

    {

    return false;

    }

    } / / end fun
Знаете ответ на вопрос?
Не уверены в ответе?
Правильный ответ на вопрос 👍 «Дано N строк. Вывести для каждой строки Good, если она - правильное скобочное выражение и Bad, если нет. ...» по предмету 📗 Информатика. Развернутая система поиска нашего сайта обязательно приведёт вас к нужной информации. Как вариант - оцените ответы на похожие вопросы. Но если вдруг и это не помогло - задавайте свой вопрос знающим оппонентам, которые быстро дадут на него ответ!
Искать готовые ответы