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

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

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

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

Задача на применение стека

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

sweeney

Новые
Регистрация
10 Дек 2008
Сообщения
13
Реакции
0
Баллы
0
Задача на применение стека

Paskal.webp

Вот. Помогите эту вот еще решить. Пожалуйста)) последняя задача за семестр)
 
Так, мне тут помогли ее почти сделать?

есть мысли, закидываем в наш стек все вагоны и начинаем с "вершины" (последнего закинутого элемента) проводить проверку на то какой это вагон, если 2-го типа то идёт вправо (предлагаю вправо и влево сделать списками), а если 1-го типа то влево, вот и вся задача...

Program xa;
type
stek=^vs;
vs=record
info:byte;
ukaz:stek;
end;
var
a,b,npab,lebo,nach,adr,st:stek;
i,n:integer;
begin
Writeln('koLu4ectBO BaroHoB');
write('n=');
readln(n);
b:=nil;
Writeln('BBedute tunbl Bcex BaroHoB');
new(npab);
npab^.ukaz:=nil;
nach:=npab;
writeln;
Write('HoMep --> ');
readln(npab^.info);
for i:=2 to n do
begin
new(npab^.ukaz);
npab:=npab^.ukaz;
npab^.ukaz:=nil;
writeln;
write('HoMep --> ');
readln(npab^.info);
end;
npab:=nach;
while npab<>nil do
begin
new(a);
a^.ukaz:=b;
a^.info:=npab^.info;
b:=a;
npab:=npab^.ukaz;
end;
npab:=nach;
while npab<>nil do
begin
npab^.info:=0;
npab:=npab^.ukaz;
end;
npab:=nach;
st:=b;
a:=b;
b:=a^.ukaz;
if a^.info=2 then
begin
npab^.info:=a^.info;
npab:=npab^.ukaz;
new(lebo);
lebo^.ukaz:=nil;
end
else
begin
new(lebo);
lebo^.ukaz:=nil;
lebo^.info:=a^.info;
end;
adr:=lebo;

while b<>nil do
begin
a:=b;
b:=a^.ukaz;
if a^.info=2 then
begin
npab^.info:=a^.info;
npab:=npab^.ukaz;
end
else
begin
new(lebo^.ukaz);
lebo:=lebo^.ukaz;
lebo^.ukaz:=nil;
lebo^.info:=a^.info;
end;
end;
Writeln('BaroHbl cTo9LLIUe CleBa');
lebo:=adr^.ukaz;
while lebo<>nil do
begin
Write(lebo^.info , '| ');
lebo:=lebo^.ukaz;
end;
writeln;
Writeln('BaroHbl cTo9LLIUe cnpaBa');
npab:=nach;
while npab^.info<>0 do
begin
Write('|',npab^.info , ' ');
npab:=npab^.ukaz;
end;
b:=st;
while b<>nil do
begin
a:=b;
b:=a^.ukaz;
dispose(a);
end;
lebo:=adr;
while adr<>nil do
begin
lebo:=adr;
adr:=lebo^.ukaz;
dispose(lebo);
end;
npab:=nach;
while nach<>nil do
begin
npab:=nach;
nach:=npab^.ukaz;
dispose(npab);
end;
readln;
end.

но программа вроде вот такая вот сделана)
 
Назад
Сверху