Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на Delphi и Lazarus


РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты в разделе

Gluck
Статус: 7-й класс
Рейтинг: 935
∙ повысить рейтинг »
puporev
Статус: Профессионал
Рейтинг: 307
∙ повысить рейтинг »
mklokov
Статус: 8-й класс
Рейтинг: 160
∙ повысить рейтинг »

∙ Pascal / Delphi / Lazarus

Номер выпуска:1793
Дата выхода:18.11.2019, 10:45
Администратор рассылки:Зенченко Константин Николаевич (Старший модератор)
Подписчиков / экспертов:35 / 37
Вопросов / ответов:3 / 3

Консультация # 197050: Здравствуйте! Прошу помощи в следующем вопросе: Создать стек со случайными целыми числами в диапазоне –50 до +50 и преобразовать его в два стека. Первый должен содержать только положительные числа, а второй - отрицательные. Порядок чисел должен быть сохранен, как в первом стеке. Pascal ...
Консультация # 197051: Здравствуйте! У меня возникли сложности с таким вопросом: Создать стек из случайных целых чисел и поменять местами крайние элементы. Pascal ...
Консультация # 197053: Уважаемые эксперты! Пожалуйста, ответьте на вопрос:Написать программу, которая выводи заданное число в куб используя функции.Через процедуру с блок схемой.В Pascal. ...

Консультация # 197050:

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

Дата отправки: 12.11.2019, 14:09
Вопрос задал: dkhrebtovich (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Зенченко Константин Николаевич (Старший модератор):

Здравствуйте, dkhrebtovich!

Смотрите приложение:

Код (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.

В задании не сказано, что делать с нулем, его записывают в список к отрицательным.
Удачи!

Консультировал: Зенченко Константин Николаевич (Старший модератор)
Дата отправки: 14.11.2019, 16:15
Рейтинг ответа:

НЕ одобряю +1 одобряю!

Консультация # 197051:

Здравствуйте! У меня возникли сложности с таким вопросом:

Создать стек из случайных целых чисел и поменять местами крайние элементы.

Pascal

Дата отправки: 12.11.2019, 14:15
Вопрос задал: rail (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Gluck (7-й класс):

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
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 197053:

Уважаемые эксперты! Пожалуйста, ответьте на вопрос:Написать программу, которая выводи заданное число в куб
используя функции.Через процедуру с блок схемой.В Pascal.

Дата отправки: 12.11.2019, 17:03
Вопрос задал: kondrat322 (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Зенченко Константин Николаевич (Старший модератор):

Здравствуйте, kondrat322!

Вы задали противоречивый вопрос, по этому отвечаю на оба варианта

© Цитата: kondrat322
используя функции.Через процедуру

Код (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.

Удачи!

Консультировал: Зенченко Константин Николаевич (Старший модератор)
Дата отправки: 17.11.2019, 00:23
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное