• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Паскаль. Динамические списки.

  • Автор темы Автор темы citrus
  • Дата начала Дата начала

citrus

Новые
Регистрация
29 Сен 2009
Сообщения
32
Реакции
0
Баллы
0
Паскаль. Динамические списки.

Помогите пожалуйста найти ошибку, у меня если нуля нет, то упорядочивание, которое работает, если есть ноль, то нужно найти МАХ элемент до этого нуля, вот что-то этот кусок не работает(.


Код:
program SPZD;
uses crt;
Type
Ptr=^Elem;
Elem=Record
Inf:real;
Next:Ptr;
end;

 var N,i:byte;
     Fl,FL1:boolean;
     Q,max:real;
     k,w,z,FirstPtr,ZadPtr:Ptr;


 Procedure Add_beg (var firstptr:ptr; val:real);
 Var k:ptr;
 begin
 new(k);
 k^.inf:=val;
 k^.next:=firstptr;
 firstptr:=k;
 end;

 Procedure Add_End (FirstPtr:Ptr; Val:Real; var LastPtr:ptr);
 Var k:ptr;
 begin
 k:=firstPtr;
 While k^.next<>nil do
 k:=k^.next;
 LastPtr:=k;
 New(k);
 LastPtr^.next:=k;
 k^.inf:=Val;
 LastPtr:=k;
 end;

 procedure creat_beg (var n:byte; var firstptr:ptr);
  var i:byte;
      r:real;
  begin
  firstptr:=nil;
  for i:=1 to n do
  begin
  writeln ('vvedite chislo: ');
  readln (r);
  add_beg(firstptr,r);
   end;
   end;

   procedure print_list (firstptr:ptr);
   var k:ptr;
   begin
   k:=firstptr;
   while (k<>nil) do
   begin
   writeln (k^.inf:5:2);
   k:=k^.next;
   end;
   end;

   procedure val_inf (firstptr:ptr; var zadptr:ptr;  Var Fl:Boolean);
   Var k:ptr;
   begin
   k:=firstptr;
   Fl:=true;
   While (k<>nil) and Fl do
   begin
   If (k^.inf=0) then
   begin
   ZadPtr:=k;
   Fl:=false;
   end;
   k:=k^.next;
   end;
   end;


BEGIN
clrscr;
WriteLn ('Vvedite N');
ReadLn (N);

Creat_Beg (N, FirstPtr);
Print_List (FirstPtr);
Val_Inf (FirstPtr,ZadPtr,Fl);

if (Fl) then begin
WriteLn ('Net 0 elementa.  Sortirovka:');

Fl:=true;
While Fl do
begin
Fl:=false;
k:=firstptr;
{While k^.next<>nil do}
For i:=1 to n-1 do  begin

If k^.inf>k^.next^.inf then begin
Q:=k^.inf;
k^.inf:=k^.next^.inf;
k^.next^.inf:=Q;
Fl:=true;
end;
k:=k^.next;
end;
Print_List (FirstPtr);
end;
end

else  begin   WriteLn ('Est 0 element. Poisk MAX');
 max:=k^.inf;
 w:=k;
 While w<>zadptr do
begin
 if w^.inf>max then
 begin
  max:=w^.inf;
  z:=w;
 end;
 w:=w^.next;
end;
 WriteLn ('MAX: ', z^.inf:5:2);
 end;
 ReadLn;
 end.
 
все, спасибо, вопрос снят. нашел ошибку.
 
Назад
Сверху