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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2016, 17:37   #1
Reversi
 
Регистрация: 06.05.2016
Сообщений: 8
По умолчанию помогите закомментировать код на паскале

помогите сделать комментарии, хотя бы краткие
Код:
uses crt;

type 
  pnode=^node;
  node=record
    data:integer;
    next,prev:pnode;
  end;
  
var
  i,a,b,c:integer;
  beg,first:pnode;
  
Label met;  
  
procedure add(var beg:pnode; d:integer);
var
  p,t:pnode;
begin
  new(p);
  p^.data:=d;
  p^.next:=nil;
  p^.prev:=nil;
  if beg=nil then beg:=p
  else
   begin
    t:=beg;
    while t^.next<>nil do t:=t^.next;
    t^.next:=p;
    p^.prev:=t;
   end;
end; 

procedure print(beg:pnode);
var
  p:pnode;
begin
  p:=beg;
  writeln;writeln('Список:');
  while p<>nil do
    begin
      write(p^.data,'  ');
      p:=p^.next;
    end;
  writeln;  
end;

procedure del_pos(var beg:pnode);
var
  t:pnode;
begin
  t:=beg;
  while t^.next<>nil do t:=t^.next;
  t^.prev^.next:=nil;
  dispose(t);
end;

function del_n(var beg:pnode; n:integer):integer;
var
  t:pnode;
  j,flag:integer;
begin
  t:=beg;
  j:=1;
  flag:=0;
  while t<>nil do
   begin
    if j=n then
     begin
      t^.next^.prev:=t^.prev;
      t^.prev^.next:=t^.next;
      dispose(t);
      flag:=1;
      break;
     end;
    j:=j+1; 
    t:=t^.next;
   end;
   
  if flag=1 then del_n:=1 else del_n:=0; 
end; 

procedure svaz();
var
  beg1,beg2,t:pnode;
  j,c:integer;
begin
  writeln('Список 1:');
  for j:=1 to 6 do
   begin
    c:=random(100);
    add(beg1,c);
    write(c,'  ');
   end;
  writeln;writeln('Список 2:'); 
  for j:=1 to 4 do
   begin
    c:=random(100);
    add(beg2,c);
    write(c,'  ');
   end; 
  t:=beg1;
  while t^.next<>nil do t:=t^.next;
  t^.next:=beg2;
  writeln;writeln('Связанный список:');
  t:=beg1;
  while t<>nil do
   begin
    write(t^.data,'  ');
    t:=t^.next;
   end;
  writeln; 
end; 

procedure sozd_ili();
var
  beg1,beg2,beg3,t:pnode;
  j,c,flag:integer;
begin
  writeln('Список 1:');
  for j:=1 to 10 do
   begin
    c:=random(100);
    add(beg1,c);
    write(c,'  ');
   end;
  writeln;writeln('Список 2:'); 
  for j:=1 to 10 do
   begin
    c:=random(100);
    add(beg2,c);
    write(c,'  ');
   end;
  
  new(beg3);
  beg3:=nil;
  t:=beg3;
  while beg1^.next<>nil do
   begin
    t:=beg3;
    flag:=0;
    while t<>nil do
     begin
      if t^.data=beg1^.data then flag:=1;
     end;
     
    if flag=0 then 
     if beg3=nil then 
      begin
       beg3:=beg1;
       beg3^.next:=nil;  
      end 
     else
      begin
       t:=beg3;
       while t^.next<>nil do t:=t^.next;
       t^.next:=beg1;
       t^.next^.prev:=t;
       t:=t^.next;
      end;
      
    beg1:=beg1^.next;
   end; 
   
  //t^.next:=beg2;
  
  writeln;writeln('Полученный список:');
  t:=beg3;
  while t<>nil do
   begin
    write(t^.data,'  ');
    t:=t^.next;
   end;
  writeln; 
end; 

procedure del_vse(var beg:pnode);
var
  t:pnode;
begin
  while beg^.next<>nil do
   begin
    t:=beg;
    beg:=beg^.next;
    beg^.prev:=nil;
    dispose(t);
   end;
  dispose(beg);
  writeln('Список удален');
end; 

function kol_el(beg:pnode):integer;
var
  t:pnode;
  kol:integer;
begin
  t:=beg;
  while t<>nil do
   begin
    kol:=kol+1;
    t:=t^.next;
   end;
  kol_el:=kol; 
end; 

procedure insert(var beg:pnode; n,d:integer);
var
  t,p:pnode;
  j:integer;
begin
  t:=beg;
  while t<>nil do
   begin
    j:=j+1;
    if j=n then
     begin
      new(p);
      p^.data:=d;
      p^.next:=t^.next;
      p^.prev:=t;
      t^.next:=p;
      t^.next^.prev:=p;
      break;
     end;
    t:=t^.next; 
   end;
end;  

procedure del2(var beg:pnode);
var
  t,p:pnode;
  j:integer;
begin
  t:=beg;
  while t<>nil do
   begin
    j:=j+1;
    if j mod 2=0 then
     begin
      p:=t^.next;
      writeln(t^.data);
      if t^.next<>nil then
       begin
        t^.prev^.next:=t^.next;
        t^.next^.prev:=t^.prev;
       end
      else t^.prev^.next:=nil; 
      dispose(t);
      t:=p;
     end
    else t:=t^.next; 
   end;
end;

function sum(beg:pnode):integer;
var
  t:pnode;
  s:integer;
begin
  t:=beg;
  while t<>nil do
   begin
    s:=s+t^.data;
    t:=t^.next;
   end;
  sum:=s; 
end; 

procedure perem(var beg:pnode; k,n:integer);
var
  t,p:pnode;
  j:integer;
begin
  t:=beg;
  j:=0;
  while t<>nil do
   begin
    j:=j+1;
    if j=k then
     begin
      if j=1 then
       begin
        p:=beg;
        beg:=beg^.next;
        beg^.prev:=nil;
       end
      else
       begin
        p:=t;
        t^.prev^.next:=t^.next;
        t^.next^.prev:=t^.prev;
       end;
     end;
    if j=n then
      begin
        write('--');
        p^.next:=t^.next;
        p^.prev:=t;
        t^.next:=p;
        t^.next^.prev:=p;
        write('--');
        break;
      end; 
    t:=t^.next;
   end;
end;  


procedure sort(var beg : pnode);
var  
  l,p:pnode;
  buf: integer;
  begin
  l:=beg;
while l^.next<> nil do
 begin
  p:=l^.next;
  while p<>nil do
  begin
   if l^.data>p^.data then
     begin
        buf:=l^.data;
        l^.data:=p^.data;
        p^.data:=buf;
     end;
    p:=p^.next;
  end;
  l:=l^.next; 
 end;
end;

procedure cop(var beg:pnode);
var
  t,p,first,g:pnode;
begin
  new(first);
  first:=beg;
  t:=beg;
  p:=first;
  t:=t^.next;
  while t<>nil do
   begin
    new(g);
    g:=t;
    p^.next:=g;
    p:=p^.next;
    t:=t^.next;
   end;
  print(first); 
end;

procedure invert(beg:pnode);
var
  t:pnode;
begin
  t:=beg;
  while t^.next<>nil do t:=t^.next;
  writeln;writeln('Инвертированый cписок:');
  while t<>nil do
   begin
    write(t^.data,'  ');
    t:=t^.prev;
   end;
end; 

function IntersectSorted(): pnode;
  var
    pCurItem: pnode;
    p1, p2, beg1, beg2: pnode;
    j:integer;
  begin
  
  writeln('Список 1:');
  for j:=1 to 10 do
   begin
    c:=random(100);
    add(beg1,c);
    write(c,'  ');
   end;
  writeln;writeln('Список 2:'); 
  for j:=1 to 10 do
   begin
    c:=random(100);
    add(beg2,c);
    write(c,'  ');
   end;
   
    p1 := beg1;
    p2 := beg2;
    if p1^.data <= p2^.data then 
    begin
      pCurItem := p1;
      p1 := p1^.Next;
    end 
    else begin
      pCurItem := p2;
      p2 := p2^.Next;
    end;
    Result := pCurItem;
    while (p1 <> nil) and (p2 <> nil) do
    begin
      if p1^.data <= p2^.data then
      begin
        pCurItem^.Next := p1;
        pCurItem := p1;
        p1 := p1^.Next;
      end 
      else begin
        pCurItem^.Next := p2;
        pCurItem := p2;
        p2 := p2^.Next;
      end;
    end;
    if p1 <> nil then
      pCurItem^.Next := p1
    else
      pCurItem^.Next := p2;
      
    print(pCurItem);  
  end; 

Begin
  
  for i:=1 to 5 do add(beg,random(100));
  

End.

Последний раз редактировалось Reversi; 16.05.2016 в 18:26.
Reversi вне форума Ответить с цитированием
Старый 16.05.2016, 17:44   #2
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

Цитата:
Сообщение от Reversi Посмотреть сообщение
помогите закомментировать код на паскале
Код:
{код}
Терпение!Дежурный экстрасенс скоро свяжется с вами!
Dvoishnik вне форума Ответить с цитированием
Старый 16.05.2016, 17:44   #3
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
нужны комментарии к каждой строчке
Думаете кому-то настолько нечего делать, что захочется писать комментарии к каждой из примерно 450 строк?

Да и бессмысленно это. Если иметь представление о задаче/теме и знать основы синтаксиса языка, то проще сам код читать. А без этого и комментарии не помогут.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 17.05.2016, 00:50   #4
Reversi
 
Регистрация: 06.05.2016
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
А без этого и комментарии не помогут.
хотя бы в общих чертах сами процедуры, нужно для курсача, а времени мало, поэтому не успеваю и надеялся, что тут помогут
Reversi вне форума Ответить с цитированием
Старый 17.05.2016, 11:13   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

держите описание.
не думаю, что оно Вас спасёт.
Т.к. ошибок и глюков в коде более чем достаточно!

Код:

type 
  pnode=^node; {описать тип данных "ссылка на узел списка"}
  node=record  {описать тип данных "узел списка", 
                   состоящий из данных и ссылок на следующий узел списка и на предыдущий узел  }
    data:integer;
    next,prev:pnode;
  end;

{процедура добавления значения d в список beg (в список, на который указывает ссылка beg)}  
procedure add(var beg:pnode; d:integer);

{вывести на экран содержимое списка, на который указывает ссылка beg}
procedure print(beg:pnode);

{удалить последний элемент непустого списка beg}
procedure del_pos(var beg:pnode);

{удалить n-й элемент списка beg}
function del_n(var beg:pnode; n:integer):integer;
  {ВНИМАНИЕ! Процедура рабочая, но содержит ошибки, которые проявятся при некоторых условиях!}

{процедура "связать два списка". 
Вещь полностью в себе. Никак не связана с остальным кодом! 
  Просто создаёт два списка, связывает их, выводит на экран 
  и благополучно теряет всё (с утечкой памяти)}
procedure svaz();


{создание какого-то третьего списка из двух случайных!
Вещь полностью в себе. Никак не связана с остальным кодом! 
  Просто создаёт два списка, связывает их, выводит на экран 
  и благополучно теряет всё (с утечкой памяти)}
procedure sozd_ili();

{удалить все элементы списка beg}
procedure del_vse(var beg:pnode);

{подсчитать количество элементов в списке beg}
function kol_el(beg:pnode):integer;

{вставить в список beg элемент d в позицию n}
procedure insert(var beg:pnode; n,d:integer);
  {ВНИМАНИЕ! КОД С ОШИБКАМИ!}

{удалить из списка beg элементы, стоящие на чётных позициях. удаляемые элементы выводятся на экран }
procedure del2(var beg:pnode);

{найти сумму всех элементов списка beg}
function sum(beg:pnode):integer;

{поменять местами два элемента списка k и n}
procedure perem(var beg:pnode; k,n:integer);

{сортировка списка beg}
procedure sort(var beg : pnode);
  {Внимание! Думаю, что код неверный. Список обрабатывается как односвязный, а на самом деле список ДВУХСВЯЗНЫЙ}

{создать копию списка и вывести её на экран
  ВНИМАНИЕ! Созданный список после выхода из процедуры теряется (с утечкой памяти)}
procedure cop(var beg:pnode);

{инвертировать список beg}
procedure invert(beg:pnode);


{функция должна возвращать ссылку на список, который является какой странной комбинацией двух случайных список!
   Функция ничего не возвращает!
   И, думаю, что код функции ошибочен в логике решения некой задачи}
function IntersectSorted(): pnode;
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Закомментировать код Саша1990 Помощь студентам 1 09.04.2015 00:19
Закомментировать код Саша1990 Помощь студентам 4 08.04.2015 23:34
Пожалуйста помогите закомментировать программу(С++) Саша1990 Помощь студентам 1 09.02.2015 16:45
Помогите закомментировать задачу alina1995 Общие вопросы C/C++ 3 10.12.2014 19:10