• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Помогите разработать и отладить программу с применением стека

  • Автор темы Автор темы LayZer
  • Дата начала Дата начала

LayZer

Ученик
Регистрация
18 Май 2018
Сообщения
3
Реакции
0
Баллы
0
Помогите разработать и отладить программу с применением стека

Произвести проверку соблюдения баланса операторов 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.
 
Удалил случайно часть нужного текста. Помогите доделать программу, пропустил тему по стекам и вот сейчас мучаюсь сижу, а сдавать надо через неделю. Наработки сверху.
 
Назад
Сверху