Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Зайцев М. Г. / РГР.docx
Скачиваний:
69
Добавлен:
02.01.2020
Размер:
41.8 Кб
Скачать

Var p:pnode;

begin

result:=o.first;

p:=o.first;

while (a.re*a.re+a.im*a.im)>(p.key.re*p.key.re+p.key.im*p.key.im) do

p:=p.next;

result:=p;

end;

function OrdInStr(o:ordlist):string;

Var p: pNode;

begin

if o <> nil

then

begin

Result:= 'Размер = ' + IntToStr(OrdSize(o)) + '| Элементы: ';

p:= o^.first;

while p <> nil do

begin

Result:=Result+'('+FloatToStr(p^.key.re)+';'+FloatToStr(p^.key.im)+'), ';

p:= p^.next

end;

delete(result,length(result),1);

end

else

Result:= 'List not exist';

end;

function OrdSize(o:ordlist):integer;

begin

begin

if o <> nil

then

Result:= o^.size

else//Список не существует

raise EListEmpty.Create('List is empty');//Result:= -1

end

end;

function OrdFind(o:ordlist; j:integer):t;

Var I:integer; k:pnode;

begin

i:=1;

k:=o.first;

if j<Ordsize(o) then

begin

while i<>j+1 do

begin i:=i+1; k:=k.next; end;

result:=k.key;

end;

end;

procedure OrdEmptyList(o: ordList);

begin

if o <> nil then

while o^.size <> 0 do Head(o)

end;

function OrdFindElm(o:ordlist; j:t):integer;

Var p:pnode; I:integer;

begin

result:=-1;

p:=o.first;

I:=0;

while ((j.re<>p.key.re)or(j.im<>p.key.im)) and (p.next<>nil) do begin

p:=p.next; i:=i+1;

end;

if (j.re=p.key.re)and(j.im=p.key.im) then result:=i;

end;

procedure OrdDelElmnt(o: ordlist;a:t);

Var p,l,z:pnode;

begin

p:=o.first;

while ((a.re<>p.key.re)or(a.im<>p.key.im)) do begin l:=p; p:=p.next; end;

while (a.re=p.key.re)and(a.im=p.key.im) do begin

p.key.re:=0;

p.key.im:=0;

z:=p.next;

p.next:=nil;

p:=z;

o.size:=o.size-1;

end;

l.next:=p;

end;

procedure Inserto(var o:ordlist; a:t);

begin

if o.first=nil then

addleft(o,a)

else

if (o.first.key.re=a.re)and(o.first.key.im=a.im) then

addleft (o,a)

else

if ((a.re*a.re+a.im*a.im)<(o.first.key.re*o.first.key.re+o.first.key.im*o.first.key.im))

or ((a.re*a.re+a.im*a.im)>(o.last.key.re*o.last.key.re+o.last.key.im*o.last.key.im)) then

if (a.re*a.re+a.im*a.im)<(o.first.key.re*o.first.key.re+o.first.key.im*o.first.key.im) then

addleft(o,a)

else

addright (o,a)

else

AddinPos(o,a,inspos(o,a));

end;

end.

Таблица 2. Тестовый набор

Тестовый набор 1 для тестирования операции Пуст

Номер теста

Исходные данные

Ожидаемый результат

Вход

Состояние списка

Возвращаемое значение

Состояние списка

1

()

true

()

2

10, 10

(10,10)

false

(10,10)

3

4,2

(10,10;4,2)

false

(10,10;4,2)

4

1,1

(10,10;4,2; 1,1)

false

(10,10;4,2; 1,1)

Тестовый набор 2 для тестирования операции Вставить

Номер теста

Исходные данные

Ожидаемый результат

Вход

Состояние списка

Возвращаемое значение

Состояние списка

1

3,1

()

Нет.

(3,1)

2

1,2

(3,1)

Нет.

(1,2;3,1)

3

4,2

(1,2;3,1)

Нет.

(1,2;3,1;4,2)

4

1,1

(1,2;3,1;4,2)

Нет.

(1,1;1,2;3,1;4,2)

5

2,3

(1,1;1,2;3,1;4,2)

Нет.

(1,1;1,2;3,1;2,3;4,2)

Тестовый набор 3 для тестирования операции Опустошить

Номер теста

Исходные данные

Ожидаемый результат

Вход

Состояние списка

Возвращаемое значение

Состояние списка

1

()

Нет.

()

2

(3,1)

Нет.

()

3

(1,2;3,1)

Нет.

()

Тестовый набор 4 для тестирования операции Элемент

Номер теста

Исходные данные

Ожидаемый результат

Вход

Состояние списка

Возвращаемое значение

Состояние списка

1

0

(1,1;1,2;3,1;2,3;4,2)

1,1

(1,1;1,2;3,1;2,3;4,2)

2

1

(1,1;1,2;3,1;2,3;4,2)

1,2

(1,1;1,2;3,1;2,3;4,2)

3

2

(1,1;1,2;3,1;2,3;4,2)

3,1

(1,1;1,2;3,1;2,3;4,2)

4

3

(1,1;1,2;3,1;2,3;4,2)

2,3

(1,1;1,2;3,1;2,3;4,2)

5

4

(1,1;1,2;3,1;2,3;4,2)

4,2

(1,1;1,2;3,1;2,3;4,2)

Тестовый набор 5 для тестирования операции Элементов

Номер теста

Исходные данные

Ожидаемый результат

Вход

Состояние списка

Возвращаемое значение

Состояние списка

1

()

0

()

2

(3,1)

1

(3,1)

3

(1,2;3,1)

2

(1,2;3,1)

4

(1,2;3,1;4,2)

3

(1,2;3,1;4,2)

5

(1,1;1,2;3,1;2,3;4,2)

4

(1,1;1,2;3,1;2,3;4,2)

Тестовый набор 6 для тестирования операции Список в строку

Номер теста

Исходные данные

Ожидаемый результат

Вход

Состояние списка

Возвращаемое значение

Состояние списка

1

()

0

List is empty

2

(3,1)

1

3+1i

3

(1,2;3,1)

2

1+2i; 3+1i

4

(1,2;3,1;4,2)

3

1+2i; 3+1i ; 4+2i

5

(1,1;1,2;3,1;2,3;4,2)

4

1+1i; 1+2i; 3+1i ; 4+2i;