Есть ответ 👍

Дано n строк. вывести для каждой строки good, если она - правильное скобочное выражение и bad, если нет.

284
420
Посмотреть ответы 3

Ответы на вопрос:


Посмотрел решение на с++. ну что же, я недаром зову его "полуассемблер" - нечего ему в общеобразовательных школах писать долго, много и непонятно для непосвященных. а сколько при этом можно ошибок сделать - просто жуть. вот для сравнения решение на паскале. я тоже использовал стек, чтобы проще было // pascalabc.net 3.2, сборка 1370 от 24.12.2016 // внимание! если программа не работает, обновите версию! function isgood(s: string): boolean; begin   var st: =new stack< char> ;   foreach var c in s do       case c of       '(': st.push(c);       ')': if st.count> 0 then st.pop               else begin result: =false; exit end;       end;   result: =st.count=0 end; begin   var n: =readlninteger('n=');   var s: =readarrstring(n);   s.select(x-> isgood((x-> x? 'good': 'bad').println(newline) end. контрольный пример (скобки "разбавлены" числами, чтобы было ясно, что программа не только скобки умеет читать, но и проверять их расстановку в произвольной строке) n= 4 12(3)456(7)8 123((67)8) 12)34(5 (1(234)567 good good bad bad
nikitarm756
4,5(18 оценок)

Для проверки, закрыты ли все скобки, можно было бы просто их посчитать, но мы будем проверять правильность вложенности. для этого нам пригодится std: : stack (да, и решаем на с++). #include < iostream> #include < stack> #include < string> 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 < char> 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

Отв:   2с/с не какой из них 8c/c    a,  b,  c,  g,  j  10c/c      a,  b,  c,  d,  g,  h,  i,  j 16c/c все с/c  -  это  система счисление

Реши свою проблему, спроси otvet5GPT

  • Быстро
    Мгновенный ответ на твой вопрос
  • Точно
    Бот обладает знаниями во всех сферах
  • Бесплатно
    Задай вопрос и получи ответ бесплатно

Популярно: Информатика

Caktus Image

Есть вопросы?

  • Как otvet5GPT работает?

    otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса.
  • Сколько это стоит?

    Проект находиться на стадии тестирования и все услуги бесплатны.
  • Могу ли я использовать otvet5GPT в школе?

    Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое!
  • В чем отличия от ChatGPT?

    otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.

Подпишись на наш телеграмм канал

GTP TOP NEWS