Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Списки на статической пимаяти (Паскаль)

58K
14 апреля 2010 года
*Натали*
3 / / 14.04.2010
Создать на статической памяти 2 списка треугольников, задаваемых структурой, содержащей координаты 3-х вершин треугольника в 3-х мерном пространстве. Порядок вершин произволен. Треугольники, принадлежащие к одному списку, между собой не совпадают. Реализовать функцию, формирующую из заданных 2-х списков 3-й, содержащий данные из заданных первого списка, отсутствующие во втором.
Вот тут набраски помогите доделать
Код:
program triangl;
uses crt;
const N=5;
  null=-1;
type TData=integer;
     PElem=integer;
     PList=record;
      data:array [1..3, 1..3] of TData;
       Next:PElem;
     end;
     TList=record;
       buffer:array[1..n] of PList;
       head:PElem;
       free:PElem;
     end;

procedure inic(var list:TList );
var
i:byte;
 begin
   list.head:=null;
   list.free:=1;
     for i:=1 to n-1 do
       list.buffer.next:=i+1;
     list.buffer[n].next:=null;
 end;
 
function getfreeelem (var list:TList):PElem;
begin
  if list.free<>null then
    begin
      getfreeelem:=list.free;
      list.free:=list.buffer[list.free].next;
    end
  else
  getfreeelem:=null;
end;

 
function proverka:array[1..3, 1..3] of TData;
var
q:boolean;
i,j:byte;
triangle:array[1..3, 1..3] of integer;
begin
repeat
for i:=1 to 3 do
   for j:=1 to 3 do
   begin
      writeln('&#226;&#226;&#229;&#228;&#232;&#242;&#229; ',i,'-&#243;&#254; &#234;&#238;&#238;&#240;&#228;&#232;&#237;&#224;&#242;&#243; ',j,'-&#238;&#233; &#242;&#238;&#247;&#234;&#232;');
      readln(triangle[i, j]);
   end;
      if sqrt((triangle[2, 1]-triangle[1, 1])*(triangle[2, 1]-triangle[1, 1])+
          (triangle[2, 2]-triangle[1, 2])*(triangle[2, 2]-triangle[1, 2])+
          (triangle[2, 3]-triangle[1, 3])*(triangle[2, 3]-triangle[1, 3]))+
      sqrt((triangle[3, 1]-triangle[2, 1])*(triangle[3, 1]-triangle[2, 1])+
          (triangle[3, 2]-triangle[2, 2])*(triangle[3, 2]-triangle[2, 2])+
          (triangle[3, 3]-triangle[2, 3])*(triangle[3, 3]-triangle[2, 3]))>
      sqrt((triangle[1, 1]-triangle[3, 1])*(triangle[1, 1]-triangle[3, 1])+
          (triangle[1, 2]-triangle[3, 2])*(triangle[1, 2]-triangle[3, 2])+
          (triangle[1, 3]-triangle[3, 3])*(triangle[1, 3]-triangle[3, 3]))
           then
              q:=true
      else
        writeln('&#242;&#240;&#229;&#243;&#227;&#238;&#235;&#252;&#237;&#232;&#234; &#237;&#229; &#241;&#243;&#249;&#229;&#241;&#242;&#226;&#243;&#229;&#242;');
until (q=true);
proverka:=triangle;
end;



function getlastelem(var list:Tlist):Pelem;
var
pointer:Pelem;
begin
   pointer:=list.head;
   if pointer<>null then
      begin
      while pointer<>null do
         begin
         getlastelem:=pointer;
         pointer:=list.buffer[pointer].next;
         end;
       end;
   getlastelem:=null;
end;


function insertend(var list:Tlist; data:array[1..3, 1..3] of integer):boolean;
var
lastelem, pointer:Pelem;
begin
   lastelem:=getlastelem(list);
   pointer:=getfreeelem(list);
   if pointer<>null then
      begin
      if lastelem<>null then
         begin
         list.buffer[lastelem].next:=pointer;
         list.buffer[pointer].data:=data;
         list.buffer[pointer].next:=null;
         end;
       else
       begin
       list.head:=pointer;
       list.buffer[pointer].data:=data;
       list.buffer[pointer].next:=null;
       end;
      insertend:=true;
     else
      insertend:=folse;
end;
 
 
function freeelem(var list:Tlist):boolean;
begin
  if list.free<>null then
    freeelem:=true;
  else
    freeelem:=folse;
end;


procedure readlist(var list:Tlist);
var
q:string;
begin
repeat
insertend(list, prov);
writeln('&#226;&#226;&#229;&#228;&#232;&#242;&#229; &#229;&#249;&#184; &#238;&#228;&#232;&#237; &#242;&#240;&#229;&#243;&#227;&#238;&#235;&#252;&#237;&#232;&#234;');
readln(q);
until (freeelem(list)=null) or (q='n');
end;


procedure writeelem(data:array[1..3, 1..3] of integer);
var
i, j:byte;
begin
for i=1 to 3 do
  begin
  writeln;
  for j=1 to 3 do
  write(data[i, j],' ');
  end;
end;


procedure writelist(var list:tlist);
var
pointer:Pelem;
begin
   pointer:=list;
   while pointer<>null do
      begin
      writeelem(list).buffer[pointer].data;
      pointer:=list.buffer[pointer].next;
      end;
end;
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог