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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.12.2010, 00:18   #1
Антон Лысенко
Форумчанин
 
Регистрация: 15.12.2010
Сообщений: 181
По умолчанию паскаль. Динамические данные

как написать цикл что бы в однонаправленном списке сравнивать два соседних элемента?Мне надо проверить на упорядоченность в обратном порядке, типа так:15 14 13... Мне трудно понять как имея названия только первого и последнего элемента обращаться к остальным элементам. У меня первый элемент Head и последний Last. Логически я понимаю как всё сделать но с языком проблемы, если бы это были статистические данные и обычный массив, то проблем вообще не было.
Антон Лысенко вне форума Ответить с цитированием
Старый 28.12.2010, 02:15   #2
Антон Лысенко
Форумчанин
 
Регистрация: 15.12.2010
Сообщений: 181
По умолчанию

люди, я не лентяй, я делаю программу.Не подумайте что я хочу сразу готовый код. Вот мои труды:
Код:
program Lab_14;

{$APPTYPE CONSOLE}

uses
  SysUtils;

Type Sp=^SpC;
     SpC=record
      Inf:byte;
      Next:Sp;
      end;
var Head,Last,Buf,buf1:sp;
     flag:boolean;
procedure spchar(var Head:sp);
var
ch:char; sp1:sp;
begin
  repeat
    writeln('enter comand:i-input q-quit');
    read (ch);
      if (ch='i')xor(ch='I') then
        begin
          New(sp1);
          sp1^.Next:=nil;
          writeln('enter znachenie');
          readln(sp1^.inf);
            if Head=nil then
             begin
              Head:=sp1;
              Last:=sp1;
             end
            else
             begin
              Last^.Next:=sp1;
              Last:=sp1
             end;
        end;
  until(ch='q')xor(ch='Q');
  end;
begin
new(buf);
flag:=false;
buf^.inf:=head^.inf;
buf1:=head^.Next;
last^.inf:=buf1^.inf;
repeat
while (flag=false) do
 begin
 if (buf^.inf>last^.inf)then
   flag:=false
 else
   begin
     flag:=true;
     writeln('spisok NE uporiadochen');
   end;

 end;
 until Buf^.next=nil;
 //ïðîâåðêà óïîðÿäî÷¸ííîñòè â îáðàòíîì ïîðÿäêå

 while Head<>nil do
   begin
      buf:=Head^.Next; //Head íà ñëåä. çíà÷åíèè
      dispose(Head);       //óäàëåíåå ïåðâîé ÿ÷åéêè
      Head:=buf;
   end;
readln;readln;
  { TODO -oUser -cConsole Main : Insert code here }
end.
я не зная как в основной программе сделать эту проверку.

Последний раз редактировалось Антон Лысенко; 28.12.2010 в 02:18.
Антон Лысенко вне форума Ответить с цитированием
Старый 28.12.2010, 02:40   #3
Антон Лысенко
Форумчанин
 
Регистрация: 15.12.2010
Сообщений: 181
По умолчанию

Люди посмотрите почему не могу создать список программ не задерживается на том что бы прочитать символ. Проверьте и увидете сами:
Код:
program Lab_14;

{$APPTYPE CONSOLE}

uses
  SysUtils;

Type Sp=^SpC;
     SpC=record
      Inf:char;
      Next:Sp;
      end;
var Head,Last,Buf:sp;
     flag:boolean;
procedure spchar(var Head:sp);
var
ch:char; sp1:sp;
begin
  repeat
    writeln('enter comand:i-input q-quit');
    read (ch);
      if (ch='i')xor(ch='I') then
        begin
          New(sp1);
          sp1^.Next:=nil;
          writeln('enter znachenie');
          readln(sp1^.inf);
            if Head=nil then
             begin
              Head:=sp1;
              Last:=sp1;
             end
            else
             begin
              Last^.Next:=sp1;
              Last:=sp1
             end;
        end;
  until(ch='q')xor(ch='Q');
end;
begin
   spchar(head);
   new(buf);
   buf:=head;
   flag:=true;
  while ((buf.next)<>nil) and flag do
       begin
          flag:=(buf.next^.inf>buf.inf);
          buf:=buf.Next;
       end;    //ïðîâåðêà óïîðÿäî÷¸ííîñòè â îáðàòíîì ïîðÿäêå

 while Head<>nil do
   begin
      buf:=Head^.Next; //Head íà ñëåä. çíà÷åíèè
      dispose(Head);       //óäàëåíåå ïåðâîé ÿ÷åéêè
      Head:=buf;
   end;
readln;readln;
  { TODO -oUser -cConsole Main : Insert code here }
end.
Антон Лысенко вне форума Ответить с цитированием
Старый 28.12.2010, 09:00   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

по сути вопроса мне пока сказать нечего,

просто небольшой совет - или пропатчите кодовые таблицы в реестре,
или, просто включайте русский язык, когда будете копировать текст программы в буфер обмена - это позволит нормально скопировать русские комментарии..
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
паскаль. Динамические данные. Однонаправленные списки. Антон Лысенко Помощь студентам 2 21.12.2010 20:01
Динамические данные Serious Помощь студентам 2 15.06.2010 07:25
Динамические данные(Delphi) vanya92 Помощь студентам 0 19.04.2010 21:34
Связанные динамические данные. patisson74 Помощь студентам 4 17.04.2010 22:30
Динамические данные. Списки. pulsar Помощь студентам 6 23.02.2009 16:12