Задать вопрос
16 июля, 17:34

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

+4
Ответы (1)
  1. 16 июля, 20:04
    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, если нет. ...» по предмету 📘 Информатика, а если вы сомневаетесь в правильности ответов или ответ отсутствует, то попробуйте воспользоваться умным поиском на сайте и найти ответы на похожие вопросы.
Смотреть другие ответы
Похожие вопросы по информатике
Задача 1 - Дано целое число. Если оно положительное, вывести " Число положительное ", если отрицательное вывести "Число отрицательное ", если равно 0 - "Число равно нулю" задача 2 - дано целое число.
Ответы (1)
Задан двумерный массив, имеющий N строк и M столбцов. Определите, является ли строка номер N1 равной строке номер N2. Если ДА - вывести Yes и сумму элементов строки N1. Если НЕТ - вывести No и сумму элементов строки N2.
Ответы (1)
1. Пользователем вводится целое число. Вывести на экран последовательность целых чисел от единицы до этого числа. 2. Вывести на экран 10 строк, содержащие символ *, причем количество * в каждой строке должно быть равно номеру строки. 3.
Ответы (1)
Злой хакер хочет испортить программное обеспечение на 40 компьютерах компании. На каждом компьютере 37 программ, каждая из которых состоит из 9000 строк кода.
Ответы (2)
Ввести стоимость покупки в магазине, если стоимость меньше тысячи, то вывести "скидки нет", если стоимость от 1000 до 5000, то вывести "скидка 5%", если стоимость свыше 5000, то вывести "скидка 10%". Вывести сумму со скидкой.
Ответы (1)