- •Расчетно-графическая работа по дисциплине «Информатика и программирование»
- •Цель: сформировать практические навыки разработки консольных приложений с использованием:
- •Задание
- •Порядок выполнения
- •Var o: ordlist; z:OrdIntType;
- •Interface
- •Implementation
- •Var z:plist; k:pnode;
- •Var p: pNode;
- •If (IsEmpty(l) and IsEmpty(t)) or IsEmpty(t) then exit;
- •If IsEmpty(l) and not IsEmpty(t) then
- •Interface
- •Var p:pnode;
- •Var p: pNode;
- •Var I:integer; k:pnode;
- •Var p:pnode; I:integer;
- •Var p,l,z:pnode;
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; |
|
