Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.04.2016, 17:51   #1
zenya1998
 
Регистрация: 28.04.2016
Сообщений: 3
По умолчанию Создать стек со случайными целыми числами в диапазоне –50 до +50 и преобразовать его в два стека. Первый должен содержать только п

Создать стек со случайными целыми числами в диапазоне –50 до +50 и преобразовать
его в два стека. Первый должен содержать только положительные числа, а второй -
отрицательные. Порядок чисел должен быть сохранен, как в первом стеке
zenya1998 вне форума Ответить с цитированием
Старый 05.05.2016, 17:14   #2
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

Использованы процедуры, написанные volvo.

Код:
program stack2;

{$mode objfpc}
uses
  crt,math;
type
  pstack = ^tstack;
  tstack =
  record
    info : integer;
    next : pstack;
  end;

procedure push(var s : pstack; value : integer);
var p : pstack;
begin
  new(p);
  p^.next := s;
  p^.info := value;
  s := p;
end;

function pop(var s : pstack) : integer;
var p : pstack;
begin
  result := s^.info;
  p := s;
  s := s^.next;
  dispose(p);
end;

procedure print(s : pstack);
begin
  while s <> nil do
  begin
    write(s^.info:4);
    s := s^.next;
  end;
  writeln;
end;

var
  y, s, t, x : pstack;
  i, n, value : integer;

begin
  randomize;
  s := nil; t := nil; x := nil;  y := nil;
  write('n = '); readln(n);
  for i := 1 to n do
    push(s, randomrange(-50,50));
  writeln('First stack:');
  print(s);

  while s <> nil do
  begin
    value := pop(s);
    if value > 0 then
       push(t, value)
    else
      if value < 0 then
        push(x, value)
  end;

  while t <> nil do
    push(s, pop(t));
  writeln('Second stack (positive):');
  print(s);

  while x <> nil do
    push(y, pop(x));


  writeln('Third stack (negative):');
  print(y);

  readln;
end.
ZX Spectrum-128 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заполните два массива длинной по 10 элементов каждый случайными целыми числами из диапазона от 10 до 100 так, что бы все 20 чисел Вутвут Паскаль, Turbo Pascal, PascalABC.NET 6 03.03.2016 19:05
Создать стек со случайными целыми числами. Найти максимальный элемент и вставить после него 0. Veronika_13 Помощь студентам 4 07.05.2014 23:44
создать стек с числами в диапазоне от -50 до +50 shilovec5377 Общие вопросы C/C++ 11 16.05.2013 20:21
Дан файл, компоненты которого являются целыми числами. Преобразовать его, исключив повторные вхождения одного и того же Vikulyaa Помощь студентам 2 05.10.2011 19:15
QBasic: Массив x(20) заполнить целыми случайными числами (1-100)... ski11 Помощь студентам 8 14.02.2010 14:08