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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2018, 23:44   #1
Раиса17
 
Регистрация: 12.06.2018
Сообщений: 6
По умолчанию Работа со стеками в Паскаль

Доброго времени суток.
Работаю в консольной вкладке в Делфи 7. Не знаю, важно это или нет.
Необходимо прописать удаление повторяющихся элементов в стеке. Он заполняется рандомно, в диапазоне от 1 до 5 (если ввести большую размерность, то значения точно повторятся).
Есть процедура pop , но ее нужно как-то вызвать)
Помогите пожалуйста
Вот задание полностью:
Дан стек, заполненный случайными целыми числами. Удалить из стека повторяющиеся элементы, оставив по одному.
Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
 a : array[1..100] of integer;
 size, x,n, i : integer;

procedure push(c : integer);   //  (добавление на вершину стека) считывается с клавиатуры
 begin
  size := size + 1;
  a[size] := c;
 end;

 procedure pop;               // Удаление верхнего элемента стека
 begin
  size := size - 1;
 end;

 function top : integer;     // Получение значения верхнего элемента стека
 begin
  top := a[size];
 end;

begin
  { TODO -oUser -cConsole Main : Insert code here }

size := 0;
   writeln('vvedit razmer massiva');
   readln(n);
   writeln('nash massiv');
   // заполнить рандомно, с возможным повторением
  for i := 1 to n do begin
     x:=random(5);
    Push(x);
    write(x,' ');
  end;
  Writeln;
  writeln(Top());

 {while size > 0 do
    Pop();     }

 writeln('size'); // просто выводит размер массива) Это не особо нужно
 writeln(size);

   readln;
end.
Раиса17 вне форума Ответить с цитированием
Старый 12.12.2018, 23:46   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Так а вопрос-то о чем?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 12.12.2018, 23:59   #3
Раиса17
 
Регистрация: 12.06.2018
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Так а вопрос-то о чем?
Как удалить из стека повторяющиеся элементы, оставив по одному.
Раиса17 вне форума Ответить с цитированием
Старый 13.12.2018, 00:00   #4
Раиса17
 
Регистрация: 12.06.2018
Сообщений: 6
По умолчанию

С помощью функции pop. Не знаю, как прописать условие проверки
Раиса17 вне форума Ответить с цитированием
Старый 13.12.2018, 01:40   #5
jillitil
Форумчанин
 
Аватар для jillitil
 
Регистрация: 17.10.2018
Сообщений: 184
По умолчанию

pop логичней быть функцией, а не процедурой.
Код:
 function pop: Integer;               // Удаление верхнего элемента стека
 begin
  if size = 0 then exit;
  pop:= a[size];
  size := size - 1;
 end;
2. Только ПОП, ПУШ и одного СТЕКа не достаточно, либо добавляйте стеки, минимум три, либо должны быть ещё функции доступа к любому элементу стека.
jillitil вне форума Ответить с цитированием
Старый 13.12.2018, 02:55   #6
Раиса17
 
Регистрация: 12.06.2018
Сообщений: 6
По умолчанию

Цитата:
Сообщение от jillitil Посмотреть сообщение
2. Только ПОП, ПУШ и одного СТЕКа не достаточно, либо добавляйте стеки, минимум три, либо должны быть ещё функции доступа к любому элементу стека.
Да, спасибо) Было прописано для одного стека. Желательно бы все просто заново переписать))
Раиса17 вне форума Ответить с цитированием
Старый 13.12.2018, 10:07   #7
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Цитата:
Да, спасибо) Было прописано для одного стека. Желательно бы все просто заново переписать))
можно доп. стеки "спрятать" в рекурсию. примерно так
http://www.programmersforum.ru/showt...97#post1538097
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 13.12.2018 в 10:09.
evg_m вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите решить задачу паскаль со Стеками ВЛАДООС Паскаль, Turbo Pascal, PascalABC.NET 2 14.03.2018 19:10
Работа со стеками Xumera C++ Builder 1 21.12.2013 20:56
Работа со стеками. masterlomaster Паскаль, Turbo Pascal, PascalABC.NET 2 06.04.2011 11:24
Операции со стеками videolord Общие вопросы C/C++ 2 08.03.2011 11:48