Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

Доброго времени суток.
Работаю в консольной вкладке в Делфи 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 вне форума   Ответить с цитированием
Старый 13.12.2018, 00:46   #2
Alex11223
Модератор
Заслуженный модератор
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 17,943
Репутация: 3428

icq: 512-765
skype: alexp.frl
По умолчанию

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

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

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

pop логичней быть функцией, а не процедурой.
Код:

 function pop: Integer;               // Удаление верхнего элемента стека
 begin
  if size = 0 then exit;
  pop:= a[size];
  size := size - 1;
 end;

2. Только ПОП, ПУШ и одного СТЕКа не достаточно, либо добавляйте стеки, минимум три, либо должны быть ещё функции доступа к любому элементу стека.
jillitil вне форума   Ответить с цитированием
Старый 13.12.2018, 03:55   #6
Раиса17
 
Регистрация: 12.06.2018
Сообщений: 6
Репутация: 10
По умолчанию

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

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

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


01:28.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru