Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 15.11.2010, 21:39   #1 (permalink)
citrus
Member
 
Регистрация: 29.09.2009
Сообщений: 32
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Паскаль. Динамические списки.

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


Код:
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.
citrus вне форума   Ответить с цитированием

Старый 15.11.2010, 21:39
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Если вы еще не читали похожие обсуждения - сделайте это

Динамические структуры данных
Динамические структуры данных, Паскаль
Pascal,ссылки, списки

Старый 16.11.2010, 19:12   #2 (permalink)
citrus
Member
 
Регистрация: 29.09.2009
Сообщений: 32
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

все, спасибо, вопрос снят. нашел ошибку.
citrus вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 05:01.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.