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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.02.2013, 23:58   #1
lena-tus
Пользователь
 
Регистрация: 16.05.2012
Сообщений: 10
Восклицание стеки

сть такая задача:
Написать программу по созданию, добавлению, просмотру однонаправленного линейного списка типа СТЕК. Требуется создать исходный список из N положительных и отрицательных случайных целых чисел. В созданном списке вычислить среднее арифметическое и заменить им первый элемент. Вот все что смогла сделать.
Проблема в том, что не могу реализовать вывод стека с элементом средн. знач. стека. Помогите! Пожалуйста!
Вложения
Тип файла: doc стеки.doc (24.0 Кб, 10 просмотров)

Последний раз редактировалось lena-tus; 19.02.2013 в 00:05.
lena-tus вне форума Ответить с цитированием
Старый 19.02.2013, 21:21   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Цитата:
по созданию, добавлению, просмотру однонаправленного линейного списка типа СТЕК
Тут некоторое разночтение между понятиями стека и линейного списка.
Стек - структура с разрушением: при чтении данных из стека его элементы удаляются. Однонаправленный список - это самостоятельная структура. Так, в вашем примере чтение из стека:
Код:
function pop(top:pnode; var el:string):pnode;
var
   p:pnode;
begin
    el:=top^.s;
    pop:=top^.p;
    dispose(top); // вот это "разрушитель"
end;
Опишите элемент списка иначе:
Код:
type
  pnode=^node;
  node=record;
  n : integer;  // номер элемента - ключ
   m: integer;
  p:pnode;
  end;
Тогда функция добавления в список:
Код:
function Add(beg:pnode; n, el:integer):pnode;
   var p:pnode;
begin
   new(p);
   p^.n := n;
   p^.m:= el;
   p^.p:= beg;
   beg:= p;
end;
Заполнение списка:
Код:
for i:=1 to n do
begin
    ror:=random(256)-128;
    beg:=Add(beg, i, ror);
end;
Функция извлечения из списка будет, например так:
Код:
function rNext(start : pnode, i, el) :pnode;
begin
      i := start^.n;
      el := start^.m;
      rNext := start^.p;
end;
Извлечение для подсчета суммы:
Код:
start := beg;
Sum := 0;
While start <> nil do
begin
   start := rNext(start, i, a);
   Sum := Sum + a;
   n := i;
end;
И т.д. ... Не забудьте написать и процедуру удаления списка.
Что то вроде такой:
Код:
procedure Del(var beg : pnode);
   var p1: pnode;
begin
   while beg <> nil do
   begin
      p1 := beg^.p;
      dispose(beg);
      beg := p1;
   end;
end;
Остается научиться заменять значение в заданном элементе

Как-то так ...
PS: Это не проверялось ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 25.11.2013, 20:30   #3
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

1) сообщ. #1 читать вложение
ZX Spectrum-128 вне форума Ответить с цитированием
Старый 25.11.2013, 23:04   #4
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

ZX Spectrum-128
Иногда посматривайте на дату публикации, например: 19.02.2013 21:21.
Опс ...


Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 25.11.2013, 23:13   #5
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

Тут было сообщение от владлены какой-то

Вот это
http://programmersforum.ru/showthread.php?t=248924
Должно быть, модераторы перенесли.

Последний раз редактировалось ZX Spectrum-128; 25.11.2013 в 23:16.
ZX Spectrum-128 вне форума Ответить с цитированием
Старый 26.11.2013, 00:38   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Должно быть, модераторы перенесли.
точно так. эта Владлена создала три своих темы + влезла в чужую тему.

Так что, ViktorR, Вы не правы, обвинение в некропостерстве тут не подходит.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.11.2013, 21:37   #7
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Простите, не доглядел.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Стеки Xa9t Паскаль, Turbo Pascal, PascalABC.NET 5 26.09.2012 17:40
С++ стеки student12345 Общие вопросы C/C++ 0 10.12.2011 13:11
стеки ordinary_smile Общие вопросы C/C++ 1 27.11.2011 19:34
Стеки ильшат9 Паскаль, Turbo Pascal, PascalABC.NET 0 18.10.2011 18:43
Стеки... Donim Паскаль, Turbo Pascal, PascalABC.NET 0 13.06.2011 11:33