В зависимости от того введена ли открытая скобка или закрытая напечатать “открытая круглая скобка” или “закрытая фигурная скобка”
Ожидалась закрывающаяся скобка
Ребят, помогите найти проблему в коде. Паскаль выдает ошибку "ожидалась закрывающаяся скобка". Все.
Каждой открытой скобке должна соответствовать корректно закрытая скобка
Дана строка. Проверьте правильность расстановки в ней круглых скобок: каждой открытой скобке должна.
Сообщение было отмечено companiltd как решение
Решение
Требуется круглая скобка
Программа написана как в учебнике, но тупо на ровном месте выдаёт ошибку (7ая строка на int.
Фигурная скобка для трех и более уравнений/неравенств
В процессе решения , нужно выводить систему уравнений при количестве уравнений 3 и более. В.
Программирование на языке Pascal от Елены Клейн
Хотите стать программистом? Научиться писать программы? С чего начать? Давайте начнем с языка Паскаль.
Словарик
‘ ‘ | Две единичных кавычки. Ставятся с клавиши «Э» («Є») в английской раскладке клавиатуры. Между ними записывают текстовые переменные или просто текст, который необходимо вывести. |
( ) | Круглые скобки. Используются во многих местах программы для обозначения того, к чему именно будет применена идущая перед ними команда. Например, Write (a) — напечатать значение переменной а. Sqrt (x+y) — извлечь квадратный корень из суммы x+y. |
. | Точка. Одна точка встречается в самом конце программы, после слова end. |
.. | Две точки. Служат заменой слова «до» при задании массива. Например, запись [1..20] означает, что мы задаем массив, состоящий из одной строки, содержащей 20 элементов. А запись [1..8,1..10] означает, что мы задаем массив, содержащий 8 строк по 10 элементов в каждой. |
:= | Команда «Двоеточие равно» по-научному называется «оператор присваивания». А по поведению похожа на гопника. Комбинация «Двоеточие равно» никого ни о чем не спрашивает. Она берет ячейку памяти из левой части, и засовывает туда результат действий из правой части. Если в ячейке уже что-то было – старое значение стирается, и туда насильно вписывается новое. Разбой и хулиганство, одним словом… |
; | Точка с запятой означает, что строка закончена и следует перейти к выполнению следующей команды. |
[ ] | Квадратные скобки позволяют указывать номер элемента в массиве, чтобы обратиться к конкретному элементу. Например, запись a[8] означает, что в одномерном массиве по имени a (строке, где каждый элемент зовут а, но не просто, а еще с номером, как в семье, где у всех одинаковая фамилия — а, и разные имена — номера), мы обращаемся к восьмому по счету элементу. А запись a[i,j] означает что мы обращаемся к элементу а, стоящему в i строке на j месте. |
Фигурные скобки нужны для обозначения комментария в программе. То, что внутри фигурных скобок, компьютер не пытается выполнять. Поэтому используют их в двух случаях: когда рядом с каким-то блоком программы хотят объяснить, что именно делает этот блок, или когда программа не работает как надо. Тогда мы берем в такие скобки кусочки программмы, чтоб выяснить, в каком блоке у нас ошибка. | |
= | Просто «равно» — это интеллигент, старенький профессор. Который вежливо спрашивает: «Скажите пожалуйста, а правая часть выражения таки равна его левой части? Да? Нет?» Т.е. обычный знак «равно» — это оператор сравнения . |
array | Объявление массива. Массив нужен, если мы хотим задать сразу много переменных, имеющих один тип и выполняющих одинаковую работу. Тогда мы пишем в разделе Var a: array[1..150] и задаем сразу 150 переменных по имени а с разными номерами: a[1], a[2], … , a[150] |
assign | Если мы хотим вводить данные не с клавиатуры (как маленькие), а из файла (как настоящие программисты), мы должны сказать компьютеру, что некая переменная у нас с этого момента будет брать значения из определенного файла. Пишут так: assign (f, ‘input.txt’); |
Begin | Начало. Может означать начало программы, а может встретиться и внутри программы, если, например, при выполнении какого-то условия нужно сделать несколько действий. Тогда Begin — это как бы открытая скобка, показывающая, что с этого места программы начинаются действия, которые надо выполнять. |
Char | Тип переменных. Этот тип нужен, если мы работаем с символами, записанными по одному. Например, с буквами, или знаками «+» и «-». Или даже с цифрами, но, во-первых, 15 – это будет уже две переменных типа Char, потому, что в одну такую переменную помещается только один символ, а во-вторых, цифры в Char нельзя складывать. Применять математические действия к таким переменным нельзя. Много другого, тоже полезного, делать можно. |
close | Если мы работаем с файлами, из которых берем информацию или, наоборот, в которые складываем результаты, то после окончания работы с файлом его надо закрыть. Close(f) — закрыть файл, ассоциирванный с f. |
div | Помните, в начальной школе вы еще не знали, что бывают дробные числа? Тогда вы делили одно число на другое «с остатком». Иногда в программах нам понадобится такое деление. Так вот, если 7:3=2(1 остаток), то 7 div 3 = 2. Это целая часть, получившаяся при делении. |
do | «Делать». Часть оператора цикла For. Пишут так: For i:=1 to 5 do, что означает «Для i от 1 до 5 делать…» — дальше вы напишите, что именно вам надо сделать, в данном случае, 5 раз. |
else | Иначе. Используют вместе с оператором If. Если основное условие не выполнилось, то будут выполнятся действия, прописанные после оператора else. Кстати, очень важно, перед этим оператором НЕ СТАВЯТ точку с запятой в предыдущей строке. Исключение! |
end | Конец. Если с точкой — то конец всей программы. Если с «точкой с запятой» — то закрытая «операторная скобка», обычно — парочкой к Begin, но есть и одинокие варианты end. Например, оператор case не содержит Begin, но заканчивается end. |
eof | Очень удобная команда. While not eof (f) do означает читать файл f пока он не закончится. При этом вам совершенно не надо знать, какой длины ваш файл. Сказали — читай до конца, комп и читает… |
file | Это тип данных, который позволяет потом использовать переменные этого типа для чтения информации из файлов или записи информации в файл. |
For | Оператор создания цикла. Если вам надо вывести какое-то слово 150 раз, вы конечно можете писать его 150 раз вручную. А можете просто задать цикл For i:=1 to 150 do, и ваша задача выполнится 150 раз. Правда, если вы не знаете сколько точно раз надо выполнить действие, этот цикл не подходит. |
goto | Если до раздела Var вы прописали Label 1,2,3; а потом в середине программы некоторые строчки начинаете с 1: 2: 3:, то с помощью оператора goto 2, например, вы можете отправиться прямо к строке, начатой с 2: перескочив на сколько угодно строк вниз или вверх по тексту программы. |
if | Если. Оператор логического ветвления. Позволяет проверять условия, и, если условия выполнились, выполнять одну группу действий, а если нет — другую. Иногда сопровождается else. |
input.txt | Так будет называться текстовый файл (созданный в программе Блокнот), в который мы сможем записывать данные, которые компьютер должен обработать в процессе программы. А в файл output.txt он уже запишет результат самостоятельно. Кстати, чтоб все работало, этот файл должен лежать в одной папке с вашей программой. Ну, или пишите длинный путь к файлу, начиная с имени жесткого диска. |
Integer | это целые числа от -32 727 до 32 727 . Число 33 000 и даже 32 728 компьютер уже целым не считает. У него в голове такое длинное число не укладывается. Что делать, если нужно работать с большим числом или с дробью? Для этого есть другой тип. |
Label | Если до раздела Var вы прописали Label 1,2,3; а потом в середине программы некоторые строчки начинаете с 1: 2: 3:, то с помощью оператора goto 2, например, вы можете отправиться прямо к строке, начатой с 2: перескочив на сколько угодно строк вниз или вверх по тексту программы. |
mod | Помните, в начальной школе вы еще не знали, что бывают дробные числа? Тогда вы делили одно число на другое «с остатком». Иногда в программах нам понадобится такое деление. Так вот, если 7:3=2(1 остаток), то 7 mod 3 = 1. Это остаток, получившийся при делении. |
output.txt | Так будет называться текстовый файл (созданный в программе Блокнот), в который компьютер будет записывать результаты, получившиеся в результате работы программы. Кстати, чтоб все работало, этот файл должен лежать в одной папке с вашей программой. Ну, или пишите длинный путь к файлу, начиная с имени жесткого диска. |
Program | Самое первое слово в прграмме. Назовите свою программу, например Program prim1; |
read | Останавливает выполнение программы, и ждет, пока пользователь введет что-нибудь с клавиатуры. Получив информацию, проверяет, соответствует ли она заказанному типу переменной. Если да — запоминает в указанную ячейку памяти. Если нет — выбрасывает из программы с сообщением об ошибке. Read (g); — запомнит переменную в ячейку по имени g. |
readln | Аналогично read, только после выполнения уйдет на новую строчку на экране. |
Real | это не только большие положительные или отрицательные числа, но и дробные числа. Запомните, компьютер будет следить за тем, чтоб ваши переменные ВСЕГДА были нужного типа. Если вы сложите два целых числа, умножите целое на целое или отнимите от одного целого числа другое, вы все равно получите целое число. А если вы разделите целое на целое? Результат может быть и дробным. Поэтому переменная, которая получается в результате деления, должна быть типа Real. Числа, которые компьютер выводит на экран в этом типе, выглядят непривычно. Вот так, например: |
3,2000000000Е+4 это 32 000
3,2000000000Е-2 это 0,032
Откуда я знаю? Все просто. Считайте, что знак «+» после буквы Е означает слово «умножить», а знак «-», соответственно, «разделить». Сама буква Е означает, что делить и умножать мы будем на число 10. А число после знака указывает, сколько раз мы должны выполнить это действие. Когда-нибудь на уроках математики вам расскажут о «стандартном виде числа», т.е. о том, что любое число можно записать в виде десятичной дроби, умноженной на 10 в какой-то степени, например:
Как закрыть круглые скобки в паскале
1. ОСНОВНЫЕ ЭЛЕМЕНТЫ ЯЗЫКА
Алфавит
Алфавит (разрешенный к использованию набор символов) языка Паскаль составляют:
1. Прописные и строчные (воспринимаются одинаково) буквы латинского алфавита: А, В, …, Z, а, в, …, z .
2. Цифры от 0 до 9.
3. Символ подчеркивания “ _ ”.
4. Специальные символы :
* звездочка
/ дробная черта
; точка с запятой
: двоеточие
[ ] квадратные скобки
фигурные скобки
$ знак денежной единицы
( ) круглые скобки
^ тильда (стрелка вверх)
@ коммерческое а
Комбинации специальных символов могут образовывать составные символы:
: = присваивание
< > не равно
. . диапазон значений
< = меньше или равно
> = больше или равно
Примечание. Русские буквы в программе должны заключаться в апострофы, например, ‘Текст на русском языке’.
Слова
Слова – это неделимые последовательности символов алфавита, отделенные друг от друга разделителями и несущие определенный смысл.
Слова делятся на зарезервированные слова и идентификаторы (имена). Идентификаторы, в свою очередь, делятся на стандартные и идентификаторы пользователя.
Зарезервированные слова являются составной частью языка, имеют фиксированное начертание и навсегда определенный смысл.
Зарезервированные слова языка Паскаль
остаток от деления
Идентификаторы (имена) используются для обозначения программ, переменных и постоянных величин, процедур, функций.
Общие правила написания идентификаторов
1. Идентификатор может состоять только из букв, цифр и символа подчеркивания.
2. Идентификатор начинается только с буквы или символа подчеркивания (ис ключение составляют метки, которые могут начинаться с цифры).
3. Максимальная длина идентификатора 127 символов, но значимы только первые 63.
4. Между двумя идентификаторами должен быть, по крайней мере, один пробел.
Стандартные идентификаторы предназначены для обозначения стандартных, т.е. заранее определенных, объектов (констант, процедур и функций), например, integer , sin , cos , write .
Идентификаторы пользователя применяются для обозначения объектов, определенных самим программистом. При их записи следует учитывать, что: 1) идентификаторы в программе должны быть уникальными; 2) нельзя использовать в качестве идентификаторов пользователя зарезервированные слова и стандартные имена; 3) имена для объектов программы надо выбирать так, чтобы они наилучшим образом отражали их значение.
Примеры записи идентификаторов пользователя:
a , t1, r_756, summa – правильно;
cos , while , c# , сумма – неправильно.
Общая структура программы на Паскале
В Паскаль – программе могут быть написаны следующие разделы (рис.1):
1. Заголовок программы.
2. Раздел объявлений.
3. Тело программы (основной блок программы).
список используемых библиотек (модулей);
список меток в основном блоке программы;
определение констант программы;
определение глобальных переменных программы;
Основной блок программы
Рис. 1. Полный вариант структуры Паскаль — программы
Заголовок программы состоит из зарезервированного слова program и идентификатора программы.
Раздел объявлений может включать в себя любое количество объявлений используемых библиотек, меток, констант, типов, переменных, процедур и функций.
Правило. В любом месте программы можно использовать лишь те элементы, которые были объявлены ранее по тексту программы.
Основной блок – это собственно программа, использующая всё, что было объявлено. Он начинается словом begin и заканчивается словом end с точкой. После завершающей точки любой текст игнорируется.
Основной блок состоит из операторов (предложений языка программирования), записанных в соответствии с алгоритмом. Операторы отделяются друг от друга символом “ ; ”.
Операторы подразделяются на простые и структурные. К простым операторам относятся операторы присваивания, перехода, процедуры. К структурным – операторы условия, выбора, цикла, составные. Составной оператор представляет собой последовательность операторов, заключенных в слова begin и end .
Программист, набирая те кст пр ограммы, имеет право произвольно располагать строки на экране. Однако программа легче читается, если в строке записывается только один оператор, а логически подчиненные структуры записаны на одну строку ниже и на одну–две позиции правее по отношению к более старшим .
program primer ;
x , y , summa : real ;
writeln (‘Сумма x и y равна’, summa );
Константы и переменные
Константы – это элементы данных, значения которых не меняются в процессе выполнения программы. Константы задаются идентификаторами пользователя и описываются в разделе, который начинается зарезервированным словом const .
Пример описания констант:
t=13.4; max=1000; eps=0.15E – 5; myna m e= ‘Петя Иванов’;
Переменные – это величины, которые могут менять свои значения в процессе выполнения программы. Каждая переменная принадлежит к определенному типу данных. Имена переменных и их типы объявляются в разделе, который начинается зарезервированным словом var .
Пример объявления переменных.
Комментарии
Для лучшего понимания программы в ней может быть записан произвольный текст – комментарий. Комментарий можно записать в любом месте программы, где разрешен пробел. Текст комментария ограничен символами или (* *) и может содержать любые комбинации латинских и русских букв, цифр и других символов алфавита языка Паскаль. Ограничений на длину комментария нет, он может занимать несколько строк.
Разбор олимпиадной задачи — Баланс скобок
Условие задачи взято с сайта acmp.ru (Время: 1 сек. Память: 16 Мб Сложность: 42%):
Дана последовательность, состоящая из открывающихся и закрывающихся круглых, квадратных и фигурных скобок.
Требуется написать программу, которая определит возможность добавления в эту последовательность цифр и знаков арифметических действий таким образом, чтобы получилось правильное скобочное выражение.
Входные данные
Входной файл INPUT.TXT содержит не менее 1 и не более 10 строк. В каждой строке записана одна последовательность скобок. Длина последовательности от 1 до 255 символов.
Выходные данные
В выходной файл OUTPUT.TXT выведите слитно символы 0 или 1. Их общее количество равно количеству введенных строк. Для каждой строки выводится 0, если из нее может получиться правильное скобочное выражение, и 1 иначе.
Примеры
№ INPUT.TXT OUTPUT.TXT 1 01
Разбор решения задачи
Часть задания про «определит возможность добавления в эту последовательность цифр» — не что иное как запутывание. Суть задачи в проверке корректности расстановки скобок в строке. Под этим имеется ввиду, что за каждой открывающей скобкой должна следовать парная закрывающая, а каждой закрывающей — предшествовать открывающая.
Аналогичная задача для одного вида скобок решается очень легко с помощью счетчика, который меняется в процессе обработки символов строки — увеличивается если встретился символ '(' и уменьшается для ')' . Если значение счетчика стало меньше нуля — значит имеются лишние закрывающие скобки, если же строка кончилась, а счетчик до сих пор нулю не равен — есть лишние открывающие.
Однако, в этой задаче несколько видов скобок, поэтому счетчиком тут не обойтись (и счетчиком на каждый вид скобок — тоже). Например: ( . В этой задаче нам для каждой закрывающей скобки непременно нужно найти парную открывающую и проверить ее тип, однако общая суть такая же как в случае одного типа скобок. Будем последовательно обрабатывать символы строки, каждую открывающую скобку — помещать в конец контейнера. При встрече закрывающей скобки — возьмем (при этом удалим) с конца контейнера скобку и сверим типы.
Так как добавлять и удалять скобки будем с одного и того же конца контейнера — то наиболее подходящей структурой данных является стек.