Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 16.12.2008, 20:56   #1 (permalink)
sweeney
Member
 
Регистрация: 10.12.2008
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Задача на применение стека

paskal.jpg

Вот. Помогите эту вот еще решить. Пожалуйста)) последняя задача за семестр)
sweeney вне форума   Ответить с цитированием

Старый 16.12.2008, 20:56
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Вот вам список тем, которые очень напоминаю вашу

Задача по С + +
Задача по С++

Старый 17.12.2008, 02:59   #2 (permalink)
sweeney
Member
 
Регистрация: 10.12.2008
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Так, мне тут помогли ее почти сделать?

есть мысли, закидываем в наш стек все вагоны и начинаем с "вершины" (последнего закинутого элемента) проводить проверку на то какой это вагон, если 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.
но программа вроде вот такая вот сделана)
sweeney вне форума   Ответить с цитированием
Ads

Яндекс

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


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




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

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.