![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Neon6868 |
![]() ![]()
Сообщение
#1
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 146 Пол: Мужской Репутация: ![]() ![]() ![]() |
Задание: С клавиатуры вводится текст, содержащий 4 вида скобок: (, {, [, <
Надо проверить, правильно ли расставлены скобки.Для этого, сначала надо проверить, чтобы после открывающейся скобки обязательно была закрывающаяся и чтобы соблюдались вложения скобок(т.е. например вот так (----{--)--} нельзя!). Если обнаружена скобка, то она записывается в стек.В конце програмы выводится сообщение, правильно или неправильно расставлены скобки.Если скобок в тексте нет, то вывести сообщение скобок нет. Программа:
|
![]() ![]() |
Neon6868 |
![]() ![]()
Сообщение
#2
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 146 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вот переделал. Теперь нормально??
Код Program Skobki; type stackl=^node; node=record c:char; next:stackl; end; var s:string; sp,p:stackl; i:integer; net:boolean; Procedure Push(var sp,p:stackl;c:char); begin new(p); p^.next:=sp; p^.c:=c; sp:=p; end; Function Emptystack(var SP:stackl):boolean; Begin Emptystack:=sp=nil; End; Procedure POPSL(var SP:STACKL); var p:stackl; x:string; Begin p:=SP; SP:=p^.next; x:=p^.c; dispose(p); End; Begin writeln('Vvedite stroku:'); readln(s); sp:=nil; net:=false; for i:=1 to Length(s) do case s[i] of '(','[','{','<': begin Push(sp,p,s[i]); net:=true; end; ']','}','>',')': begin net:=true; if Emptystack(SP) then begin writeln('Stek pust! Znachit skobki rasstavleni nepravilno!'); exit; end; if ((s[i] in [']','}','>']) and (ord(s[i])=ord(sp^.c)+2)) or ((s[i]=')') and (ord(s[i])=ord(sp^.c)+1)) then POPSL(SP); end; end; if net=false then begin writeln('Skobok v stroke net!'); exit; end; if Emptystack(SP) then writeln('Skobki rasstavleni pravilno!') else writeln('Skobki rasstavleni nepravilno!') end. |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 22:49 |