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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2013, 09:34   #1
Victor1995
Пользователь
 
Регистрация: 19.12.2013
Сообщений: 12
По умолчанию Указатели в Паскале: Программу, которая удаляет из линейного списка целых чисел первый отрицательный элемент

написать программу которая удаляет из линейного списка входной последовательности целых чисел первый отрицательный элемент. Помогите, пожалуйста, написать программу.

Последний раз редактировалось Victor1995; 21.12.2013 в 11:32.
Victor1995 вне форума Ответить с цитированием
Старый 21.12.2013, 12:54   #2
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

Нахождение написано, а вот удаление...
"Ну не шмогла я"

Код:
uses crt;
Type ukazat= ^S;
   S= record
      Inf: integer;
      Next: ukazat;
   End;
var
  dx,x,u:ukazat;
  otr,n,i :integer;
begin
  write('Количество элементов');
  readln(n);
  for i:=1 to n do
    begin
      New(x);
      Read(x^.Inf);
      x^. Next:= u;
      u:= x;
   end;

  x:= u;
  while x<> nil do
    begin
      if x^.inf<0 then
        begin
          otr:=x^.inf;
        end;
      x:= x^.next;
    end;

  writeln;
  writeln('Первый отрицательный элемент = ',otr);

{  x:= u;
  while (x<> nil) and (x^.inf<> otr) do
    begin
      dx:= x;
      x:= x^.next;
    end;
  dx:= x^.next;
  dispose(x);}

//  u:=x;
  Writeln('Вывод списка');
  While u<> nil do
    Begin
      Write (u^.inf,' ');
      u:= u^.next;
   end;
  readln;
end.
ZX Spectrum-128 вне форума Ответить с цитированием
Старый 21.12.2013, 15:24   #3
Victor1995
Пользователь
 
Регистрация: 19.12.2013
Сообщений: 12
По умолчанию

И на этом большое спасибо!
Victor1995 вне форума Ответить с цитированием
Старый 24.12.2013, 09:05   #4
Victor1995
Пользователь
 
Регистрация: 19.12.2013
Сообщений: 12
По умолчанию Указатели в Паскале

Вот программа вывода первого отрицательного элемента, а что нужно дописать чтобы он удалялся? Подскажите пожалуйста.
Код:
program laba8;
Type T=^TABL;
     TABL=record;
      D: integer;
      L:T;
   End;
var
  k,F,W:T;
  M,N,i :integer;
begin
  write('Количество элементов =');
  readln(N);
  for i:=1 to N do
    begin
      New(F);
      Read(F^.D);
      F^. L:= W;
      W:= F;
   end;
  F:= W;
  while F<> nil do
    begin
      if F^.D<0 then
                begin
                M:=F^.D;
                end;
      F:= F^.L;
    end;
   writeln;
  writeln('Первый отрицательный элемент = ',M);
  { F:= W;
   while (F<> nil) and (F^.D<> M) do
    begin
      k:= F;
      F:= F^.L;
    end;
  k:= F^.L;
  dispose(F);}

 // W:=F;
  Writeln('Вывод списка');
  While W<> nil do
    Begin
      Write (W^.D,' ');
      W:= W^.L;
   end;
end.
Victor1995 вне форума Ответить с цитированием
Старый 24.12.2013, 09:21   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Примерно так:
Код:
  while F^.L<> nil do
    begin
      if F^.L^.D<0 then
                begin
                 M:=F^.L^.L; F^.L:=M;
                 dispose(F^.L); break;
                end;
      F:= F^.L;
    end;
И еще: Кросспосты у нас не приветствуются. Банить за это будем.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.12.2013, 09:51   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Victor1995, то, что Вы переименовали идентификаторы в программе, написанной Вам ZX Spectrum-128, ещё не означает, что эта программа стала ваша.
Вы даже комментарии оставили.

Меня другое интересует. Список выводится в обратном порядке (относительно ввода элементов списка), Вас это устраивает? Или это вообще так и должно быть?!




Цитата:
Сообщение от Stilet Посмотреть сообщение
И еще: Кросспосты у нас не приветствуются. Банить за это будем.
Коллега, я слил темы в одну, Вы, надеюсь, не возражаете?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 24.12.2013, 10:24   #7
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

Цитата:
Примерно так:
Не допетрил
Спасибо!
ZX Spectrum-128 вне форума Ответить с цитированием
Старый 24.12.2013, 10:51   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
не возражаете?!
Нет. Не возражаю.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.12.2013, 11:19   #9
Victor1995
Пользователь
 
Регистрация: 19.12.2013
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Примерно так:
Код:
  while F^.L<> nil do
    begin
      if F^.L^.D<0 then
                begin
                 M:=F^.L^.L; F^.L:=M;
                 dispose(F^.L); break;
                end;
      F:= F^.L;
    end;
И еще: Кросспосты у нас не приветствуются. Банить за это будем.
Спасибо. Извините за кросспосты, не знал.
Victor1995 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
формирование линейного списка целых чисел, элементы которого считываются из текстового файла kalosha-stepa Паскаль, Turbo Pascal, PascalABC.NET 10 21.10.2012 22:02
В каджом столбце массива А поменять местами первый отрицательный элемент с последним элементом столбца. Carmen Помощь студентам 1 31.05.2011 19:41
найти первый отрицательный элемент массива имеющий чётный номер (Delphi) Vanger Помощь студентам 5 25.01.2011 11:41
Паскаль. Первый отрицательный элемент. DaRus Помощь студентам 7 18.12.2009 21:26