Консультация # 197050: Здравствуйте! Прошу помощи в следующем вопросе: Создать стек со случайными целыми числами в диапазоне –50 до +50 и преобразовать его в два стека. Первый должен содержать только положительные числа, а второй - отрицательные. Порядок чисел должен быть сохранен, как в первом стеке. Pascal ...Консультация # 197051: Здравствуйте! У меня возникли сложности с таким вопросом: Создать стек из случайных целых чисел и поменять местами крайние элементы. Pascal ...Консультация # 197053: Уважаемые эксперты! Пожалуйста, ответьте на вопрос:Написать программу, которая выводи заданное число в куб используя функции.Через процедуру с блок схемой.В Pascal. ...
Здравствуйте! Прошу помощи в следующем вопросе: Создать стек со случайными целыми числами в диапазоне –50 до +50 и преобразовать его в два стека. Первый должен содержать только положительные числа, а второй - отрицательные. Порядок чисел должен быть сохранен, как в первом стеке. Pascal
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.
В задании не сказано, что делать с нулем, его записывают в список к отрицательным. Удачи!
Program Stek; uses crt; {Для использования readkey и clrscr} type Tinf=integer; {тип данных, который будет храниться в элементе стека} List=^TList; {Указатель на элемент типа TList} TList=record {А это наименование нашего типа "запись" обычно динамические структуры описываются через запись} data:TInf; {данные, хранимые в элементе} next:List; {указатель на следующий элемент} end;
{Процедура добавляющая элемент в стек} procedure
AddElem(var stek1:List;znach1:TInf); var tmp:List; begin GetMem(tmp,sizeof(TList)); {выделяем в памяти место для нового элемента} tmp^.next:=stek1; {указатель на следующий элемент "направляем" на вершину стека} tmp^.data:=znach1; {добавляем к элементу данные} stek1:=tmp; {вершина стека изменилась, надо перенести и указатели на неё} end;
{Процедура вывода стека} procedure Print(stek1:List); begin if stek1=nil th
en {проверка на пустоту стека} begin writeln('‘⥪ Їгбв.'); exit; end; while stek1<>nil do {пока указатель stek1 не станет указывать в пустоту} begin {а это произойдёт как только он перейдёт по ссылке последнего элемента} Write(stek1^.data, ' '); {выводить данне} stek1:=stek1^.next {и переносить указатель вглубь по стеку} end; end;
procedure change(var yk:List); var tmp,tmp1:List; begin if yk=nil
then exit; tmp:=yk; while tmp^.next<>nil do tmp:=tmp^.next; {ставим tmp на последний элемент} tmp1:=yk; while tmp1^.next<>tmp do {tmp1 ставим на предпоследний элемент} tmp1:=tmp1^.next; if tmp1=yk then {в стеке два элемента} begin yk^.next:=nil; tmp^.next:=yk; yk:=tmp; end else begin tmp1^.next:=yk; tmp^.next:=yk^.next; yk^.next:=nil; yk:=tmp; end;<
br>end;
{Процедура освобождения памяти занятой стеком} Procedure FreeStek(stek1:List); var tmp:List; begin while stek1<>nil do {пока stek1 не станет указывать в "пустоту" делать} begin tmp:=stek1; {указатель tmp направим на вершину стека} stek1:=stek1^.next; {вершину стека перенесём на следующий за данной вершиной элемент} FreeMem(tmp,SizeOf(Tlist)); {освободим память занятую под старую вершину} end; end;
var yk:List;
{Указатель на "начало" стека} n:integer; znach:Tinf; begin randomize; repeat clrscr; Writeln('Vvedute kolu4ectvo elementov v steke'); Write('N= '); readln(n); until n>0; while n>0 do begin znach:=random(1000); AddElem(yk,znach); dec(n); end; clrscr; Writeln('Ctek do u3menenui'); Print(yk); change(yk); Writeln; Wri
teln('Ctek pocle u3menenui'); Print(yk); readln; FreeStek(yk); end.
Приложение:
Консультировал: Gluck (7-й класс)
Дата отправки: 12.11.2019, 22:41
Уважаемые эксперты! Пожалуйста, ответьте на вопрос:Написать программу, которая выводи заданное число в куб используя функции.Через процедуру с блок схемой.В Pascal.
var
a:integer;
procedure a3(var a:integer);
begin
a:=a*a*a
end;
function pow3(a:integer):integer;
begin
pow3:=a*a*a
end;
begin
write('enter number:');
readln(a);
writeln('result function:=',pow3(a));
a3(a);
writeln('result procedure:=',a)
end.
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались.
Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора -
для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение.
Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал,
который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом.
Заходите - у нас интересно!