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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.04.2011, 14:50   #1
BaronVik
Пользователь
 
Регистрация: 21.04.2010
Сообщений: 36
Восклицание Динамический список и передвижение чисел

Здравствуйте уважаемые программисты. Сного прошу вашей помощи с задачкой. Вот задание:
Скорректировать массив A=a1,а2,...аn, переписав в начало массива группу, содержащую наибольшее число подряд идущих положительных элементов.Выполнить задание не создавая нового массива, а используя динамический список.

Вот моя наработка

Код:
uses crt; {CurrentRec- Начло списка}
type
  mass=^element;
  element=record
     X,nom:integer;
     next,pre:mass;
  end;
var List,Endlist,CurrentRec,MinRec:mass;
    n,k,i_con,i,j,tmp,i_na4,dlin: integer;
{----------------------------------------------------------------------------}
procedure NewListRec;
begin
   new(list);
   list^.X:=random(20)-random(9);
   list^.pre:=nil;
   list^.nom:=1;
   CurrentRec:=List;
   for I:=2 to n do
      begin
         New(CurrentRec^.next);
         CurrentRec^.next^.X:=random(20)-random(9);
         CurrentRec^.next^.nom:=i;
         CurrentRec^.next^.pre:=CurrentRec;
         CurrentRec:=CurrentRec^.next;
      end;
   CurrentRec^.Next:=nil;
   endlist:=CurrentRec {Konec spiska}
end;
{----------------------------------------------------------------------------}
procedure WriteList;
begin
   CurrentRec:=List;
   repeat
      write (CurrentRec^.X:3);
      CurrentRec:=CurrentRec^.next;
   until CurrentRec=nil;
end;
{----------------------------------------------------------------------------}
begin
   randomize;
   clrscr;
   writeln('Kol-vo pam9ti: ', memavail);
   write('Vvedite kol-vo elementov v massive: ');
   readln(n);
   NewListRec;
   Write(' Isxodnii massiv:  ');
   WriteList;
   k := 0;
   i_con := 0;
   CurrentRec:=List;
   for i := 1 to n do
      begin
         if CurrentRec^.X > 0 then
            k := k + 1
         else
         begin
            if k > dlin then
               begin
                  dlin := k;
                  i_na4 := i - k;
               end;
         k := 0;
         end;
      CurrentRec:=CurrentRec^.next;
      end;

   if ( k > dlin ) then
   begin
     dlin := k;
     i_na4 := n - k + 1;
   end;
   i_con := i_na4 + dlin - 1;
   writeln;

   if dlin = 0 then
      writeln ('Net polozitelnix 4isel')
   else
      write('Sama9 dlinna9 posledovatelnost( ',dlin,') na4inae');
      writeln('ts9 s( ', i_na4,')я94eike i zakan4ivaets9 na( ',i_con,').');
  {??????????????????????}
   readkey;
end.
Я тут(где ???????) не соображу как поставить указатель на i_na4 ячейку(или как её тут можно назвать в динамическом списке) я попытался для этого ввести в record переменную nom:integer которая бы содержала в себе номер ячейки,но как к ней обратиться и с каким условием не пойму.Или тут можно как то по другому сделать и я неправильным путём пошёл? Прошу подтолкните в нужном направлении,второй день над ней потею. Заранее спасибо всем откликнувшимся.


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #), а не тегом [РHР]!
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 30.04.2011 в 18:58.
BaronVik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамический список Sergey240892 Помощь студентам 7 18.04.2011 20:34
Динамический список на Си Slame Помощь студентам 1 10.04.2011 17:39
связать список строк и список целых чисел lirikoff Помощь студентам 5 31.08.2010 13:23
Динамический список в С серг Общие вопросы C/C++ 9 11.03.2010 13:39
Динамический список в С серг Общие вопросы C/C++ 0 04.03.2010 19:54