Показать сообщение отдельно
Старый 03.06.2018, 20:02   #1 (permalink)
LayZer
Новичок
 
Регистрация: 18.05.2018
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Помогите разработать и отладить программу с применением стека

Произвести проверку соблюдения баланса операторов REPEAT
UNTIL в тексте программы на языке Паскаль. Использовать программный стек.



Код:
Program Skobki;
Type
EXST = ^ST;
ST = record
Data : char;
Next : EXST;
end;
Var
a : string;
f : boolean;
i : integer;
Procedure writeStack(Var x1 : EXST; c : char);
Var
u : EXST;
Begin
new(u); {Создание нового элемента стека}
u^.Data := c;
u^.Next := x1;
x1 := u; {Созданный элемент определить как вершину стека}
End;
Procedure DelStack(Var x1 : EXST); {Процедура удаления верхнего элемента стека}
Var
u : EXST;
Begin
u := x1;
x1 := x1^.Next;
dispose(u);
End;
Procedure Solve(a : string); {Проверка баланса repeat-until}
Var
Stack : EXST;
Begin
Stack := Nil;
i := 1;
while (i<=Length(a)) and f do
begin
if (a[i]='repeat')
then
writeStack(Stack , a[i])
else
if (a[i]='until')
then
if (Stack <> Nil) And (Ord(a[i]) - Ord(Stack ^.Data) <= 2)
then
DelStack(Stack)
else
f := False;
Inc(i);
end;
end;
Begin
writeln('Vvedite stroky');
readln(a);
f := True;
if a<>''
then
begin
Solve(a);
if f
then
writeln('Balans')
else
writeln('Net balansa');
end
else
writeln('Строка пуста');
readln;
End.
LayZer вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070