Технический форум

Технический форум (http://www.tehnari.ru/)
-   Delphi, Kylix and Pascal (http://www.tehnari.ru/f43/)
-   -   Помогите разработать и отладить программу с применением стека (http://www.tehnari.ru/f43/t259851/)

LayZer 03.06.2018 20:02

Помогите разработать и отладить программу с применением стека
 
Произвести проверку соблюдения баланса операторов 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 03.06.2018 20:15

Удалил случайно часть нужного текста. Помогите доделать программу, пропустил тему по стекам и вот сейчас мучаюсь сижу, а сдавать надо через неделю. Наработки сверху.


Часовой пояс GMT +4, время: 18:34.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.