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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.01.2009, 12:07   #1
Vali_T
Пользователь
 
Регистрация: 23.05.2008
Сообщений: 32
По умолчанию Списки в Паскаль

Здравствуйте, помогите пожалуйста разобраться в задаче:

Задача: Составить программу которая удаляет из списка L все отрицательные элементы.

Даже не знаю с чего начать(
Vali_T вне форума Ответить с цитированием
Старый 16.01.2009, 12:12   #2
Sm1Le
Форумчанин
 
Аватар для Sm1Le
 
Регистрация: 31.10.2008
Сообщений: 500
По умолчанию

Начни с поиска по форуму ... или посмотри в Низ ЭТОЙ странички !!!!
Skype : UASm1Le.
Sm1Le вне форума Ответить с цитированием
Старый 16.01.2009, 12:39   #3
Vali_T
Пользователь
 
Регистрация: 23.05.2008
Сообщений: 32
По умолчанию

ну спасибо большое, помог разобрать((
Vali_T вне форума Ответить с цитированием
Старый 16.01.2009, 12:50   #4
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

Понимаете эти задачи не уникальны поэтому посмотрите примеры
например
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Старый 16.01.2009, 16:49   #5
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

как я соскучился по динамике
capta1n вне форума Ответить с цитированием
Старый 16.01.2009, 17:43   #6
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию Не забудь про отзыв! :)

Код:
program capta1n;
type

  link = ^linelink; {Формирование списка}
  linelink = record
              number : integer;
              next : link
             end;

var
  start,last : link; {Начальный и конечный указатели соответственно}
  c : integer;
  f1 : text;

  procedure list ( var top, last : link; n1 : integer ); {Процедура формирования списка на основе входных данных в виде целого числа}
  begin

    if top=nil then {Если записываем первый элемент - записываем его в следующий за головой элемент, а в голове делаем буфер из нуля (его использовать не надо)}
    begin
      new(top);
      top^.number:=0;
      last:=start;
      new(last^.next);
      last:=last^.next;
      last^.number:=n1;
      last^.next:=nil
    end
    else {Если элемент не первый, то добавляем в конец}
    begin
      new(last^.next);
      last:=last^.next;
      last^.number:=n1;
      last^.next:=nil
    end

  end;

  procedure delete1 ( var top : link ); {Процедура удаления из списка отрицательных элементов}
  var
   last,uk : link;
  begin

    if top<>nil then {Если список не пуст}
    begin
      last:=top; {Указатель делаем на голову, в которой буфер, чтобы сравнивать последующие элементы}
      while last^.next<>nil do {Пока не дойдем до последнего элемента, проверяем на отрицательность}
      begin
        if last^.next^.number < 0 then
        begin
          uk:=last^.next; {Запоминаем адрес удаляемого элемента}
          last^.next:=last^.next^.next; {Связываем предыдущий и последующий элементы этого удаляемого элемента}
          dispose (uk) {Очищаем память под удаляемый элемент}
        end
        else last:=last^.next {Если удаление не было произведено - мотаем список}
      end
    end
  end;

  procedure conclusion ( var top : link ); {Процедура вывода списка}
  var
   last : link;
  begin
    if top<>nil then {Если список не пуст}
    begin
      last:=top^.next; {Начинаем вывод с самого списка - буфер в голове нам не нужен}
      while last<>nil do {Пока не достигнем конца списка - выводим содержимое и мотаем}
      begin
        writeln (last^.number);
        last:=last^.next
      end
    end
  end;
  
begin
  start:=nil; {Указатели ни на что не указывают пока}
  last:=nil;
  readln (c);
  while c<>0 do {Ввод продолжать до первого нуля}
  begin
    list (start,last,c); {формирование}
    readln (c)
  end;
  writeln ('------------');

  delete1 (start); {удаление}
  conclusion (start); {вывод}

  readln
end.

{В данной программе были использованы очереди со структурой FIFO - First In - First Out}
capta1n вне форума Ответить с цитированием
Старый 18.01.2009, 11:07   #7
Vali_T
Пользователь
 
Регистрация: 23.05.2008
Сообщений: 32
По умолчанию

capta1n спасибо за подробное разъяснение!!
Vali_T вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Срочно,пожалуйста...паскаль динамич. списки Никита35 Помощь студентам 2 07.05.2008 22:48
Паскаль,списки.Срочно,пожалуйста... Никита35 Помощь студентам 7 06.05.2008 11:25
Списки. Паскаль Demyrg Помощь студентам 2 10.04.2008 08:20
Паскаль. Списки Freem Паскаль, Turbo Pascal, PascalABC.NET 2 11.05.2007 14:22