Консультация № 197050
12.11.2019, 14:09
0.00 руб.
0 1 1
Здравствуйте! Прошу помощи в следующем вопросе: Создать стек со случайными целыми числами в диапазоне –50 до +50 и преобразовать его в два стека. Первый должен содержать только положительные числа, а второй - отрицательные. Порядок чисел должен быть сохранен, как в первом стеке.
Pascal

Обсуждение

давно
Старший Модератор
31795
6196
14.11.2019, 16:15
общий
это ответ
Здравствуйте, dkhrebtovich!

Смотрите приложение:
[code lang=pascal h=300]type
pStack=^tStack;
tStack=record
data:integer;
last:pStack
end;
procedure writelist(a:pStack;b:char);
begin
write(b);
while a<>nil do
begin
write(a^.data:4);
a:=a^.last
end;
writeln
end;
procedure freelist(var a:pStack);
var
b:pStack;
begin
while a<>nil do
begin
b:=a;
a:=a^.last;
dispose(b)
end;
end;
procedure Add2End(var a,b:pStack);
var
c:pStack;
begin
c:=b;
if b<>nil then
begin
while c^.last<>nil do c:=c^.last;
c^.last:=a;
c:=c^.last;
end else
begin
b:=a;
c:=b;
end;
a:=a^.last;
c^.last:=nil;
end;
var
a,b,c:pStack;
z:integer;
begin
randomize;
z:=random(15)+10;
a:=nil;
while z>0 do
begin
new(b);
b^.data:=random(101)-50;
b^.last:=a;
a:=b;
dec(z);
end;
writelist(a,'=');
b:=nil;
c:=nil;
while a<>nil do if a^.data>0 then Add2End(a,b)else Add2End(a,c);
writelist(b,'+');
writelist(c,'-');
freeList(b);
freeList(c);
end.[/code]
В задании не сказано, что делать с нулем, его записывают в список к отрицательным.
Удачи!
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа