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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.12.2015, 22:55   #1
topol789
 
Регистрация: 24.12.2015
Сообщений: 3
По умолчанию Динамические списки

Описать процедуру, которая удаляет из списка L первый отрицательный элемент, если такой есть; описать процедуру, которая добавляет в конец списка L1 все элементы списка L2, а затем ещё среднее арифметическое списка L1.
заранее спасибо)
topol789 вне форума Ответить с цитированием
Старый 25.12.2015, 10:23   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Попытки и наработки имеются?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.12.2015, 12:29   #3
topol789
 
Регистрация: 24.12.2015
Сообщений: 3
По умолчанию

Удаление получилось, осталось только добавить список и среднее значение.

Код:
uses
  crt;

type
  uk = ^trec;
  trec = record
    x: integer;
    adr: uk
  end;

var p1,p2,first:uk;
    ft, L1:text;
     procedure SOZD_SPIS;
     begin
     reset(ft);
     first:=nil;
     while not eof(ft) do begin
                          new(p1);
                          read(ft,p1^.x);
                          if first=nil then first:=p1
                          else p2^.adr:=p1;
                          p2:=p1;
                           end;
    p2^.adr:=nil;
    close(ft);
    end;
    
    procedure VIVOD_SPIS(ft:uk);
    begin
    p1:=ft;
    while p1<>nil do begin
                     write(p1^.x:5);
                     p1:=p1^.adr;
                     end;
    end;
    
procedure UDAL(var first: uk);
var
  priz: boolean;
begin
  p1 := first;
  
  priz := true;
  while (p1 <> nil) and priz do begin
    if (p1^.x < 0) then begin
      if p1=first then begin first:=p1^.adr; priz:=false end;
    
      priz := false; p2 := p1;end;
      p1:=p1^.adr  
      end;
p1:=first;
while p1^.adr <> p2 do p1:=p1^.adr;
p1^.adr:=p2^.adr
end;    



begin
assign (ft, '1.txt');
  SOZD_SPIS;
  writeln('исходный');
  VIVOD_SPIS(first);
  UDAL(first);
  writeln;
  writeln('после удаления отрицательного ');
  VIVOD_SPIS(first);
  end.
topol789 вне форума Ответить с цитированием
Старый 26.12.2015, 13:36   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
осталось только добавить список и среднее значение.
Код:
Procedure adds(b:uk;var a:uk);
var avg,i:integer;
begin
 i:=1;avg:=0;
 while b<>nil do begin
  new(a^.next);
  a^.next^.x=b^.x; a^.next^.next:=nil;
  avg:=avg+b^.x; inc(i);
  b:=b^.next;
 end;

  new(a^.next);
  a^.next^.x=avg div i; a^.next^.next:=nil;
end;
b - добавляемый список
a - список, куда добавляется.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамические списки seo-romka Помощь студентам 2 09.03.2011 19:30
динамические списки tricksler Помощь студентам 0 10.12.2010 21:15
Динамические списки Pavelhr Помощь студентам 0 08.01.2010 02:55
Динамические списки MyQwErTy Помощь студентам 3 14.04.2009 20:08