Решите на паскаль плз 1. «строки» дано арифметическое выражение, требуется вывести его корректность. корректность = true если скобки расставлены в нем верно, = false если неверно. на корректность влияют только скобки. входные данные: арифметическое выражение в одну строку (до 255 символов) выходные данные: корректность пример: вход выход 1+5+(321-54*[321-321]+21) true 1+5+(321-54*[321-321]+21 false
228
494
Ответы на вопрос:
Идея алгоритма заключается в том, что для проверки корректности строки мы заводим стек, содержащий в себе открывающие скобки. посмотрим конкретно на вашем примере: ) 1+5+(321-54*[321-321]+21) мы идём слева-направо, откидывая все символы, не являющиеся скобками, поскольку они нас не интересуют (как это было указано в вашем условии, почему я это и уточнял) затем, натыкаясь на открывающую скобку, добавляем её в стек. в нашем стеке: "(" идём дальше, находим открывающую квадратную скобку, кладём в стек в нашем стеке: "([" дальше видим закрывающую квадратную скобку, т.к. у нас последняя добавленная скобка - [, значит, она закрываёт её. в нашем стеке: "(" аналогично с круглой скобкой, в итоге в нашем стеке не остаётся ничего, строка корректна: ) в остальных случаях: если программа наткнётся на закрывающую скобку, для которой не найдётся открытой в стеке, причём той же самой (для квадратной - квадратная, для круглой - круглая, для фигурной - фигурная) выходит, выражение некорректно, что мы и выводим в качестве ответа. само собой, если после выполнения программы останутся незакрывшиеся скобки, значит, это выражение тоже является некорректным. я не мастер объяснять, но надеюсь, что мой разбор вам: ) исходный код вложен в ответ.
program al; var a: array[1..32000] of integer; buf: integer; i,n,min,max: integer; begin writeln('n='); readln(n); writeln('vvedite massiv='); for i : = 1 to n do readln(a[i]); min: =1; max: =1; for i: =2 to n do begin if a[min]> a[i] then min: =i; if a[max]< a[i] then max: =i; end; buf: =a[min]; a[min]: =a[max]; a[max]: =buf; writeln('massiv posle obmena max< -> min'); for i: =1 to n do write(a[i]: 4); writeln; end.
Реши свою проблему, спроси otvet5GPT
-
Быстро
Мгновенный ответ на твой вопрос -
Точно
Бот обладает знаниями во всех сферах -
Бесплатно
Задай вопрос и получи ответ бесплатно
Популярно: Информатика
-
736Nikolay1111111125.02.2020 09:35
-
kovalchukmarina111.06.2020 09:56
-
Сонечко100121.06.2021 19:27
-
Алика66626.11.2020 20:06
-
YumiChan15305.07.2021 11:01
-
us6ipi201308.06.2021 01:39
-
crasavchik06.02.2021 14:53
-
annakraevaya06106.01.2020 21:23
-
ponomarjovakse29.07.2021 22:57
-
Spartak193515.02.2020 22:40
Есть вопросы?
-
Как otvet5GPT работает?
otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса. -
Сколько это стоит?
Проект находиться на стадии тестирования и все услуги бесплатны. -
Могу ли я использовать otvet5GPT в школе?
Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое! -
В чем отличия от ChatGPT?
otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.