Удалить все повторяющиеся результаты массива - PascalABC.NET
Формулировка задачи:
Промаялся уже очень долго, решил написать на форум. Необходимо, чтобы все повторяющиеся результаты массива (ac) удалялись. Вроде задача проста, а решить не могу.
Решение задачи: «Удалить все повторяющиеся результаты массива»
textual
Листинг программы
function SquareRoot(N : Integer) : Integer;
begin
var R := 1;
var Q := 1;
var D := 1;
while Q < N do
begin
R += 1;
D += 2;
Q += D;
end;
Result := N = Q ? R : 0;
end;
var
U : array [1..1000, 0..2] of Integer;
Usize : Integer := 0;
function Unical(a, b, c : Integer) : Boolean;
begin
Result := False;
for var i := 1 to Usize do
if (U[i, 0] = a) and (U[i, 1] = b) and (U[i, 2] = c) then
Exit;
Usize += 1; U[Usize, 0] := a; U[Usize, 1] := b; U[Usize, 2] := c;
Result := True;
end;
begin
var aMax := ReadLnInteger('Максимальная длина первого катета a=');
var bMax := ReadLnInteger('Максимальная длина второго катета b=');
for var a := 1 to aMax do
for var b := 1 to bMax do
begin
var c := SquareRoot(a*a + b*b);
if c > 0 then
if Unical(a, b, c) and Unical(b, a, c) then
WriteLnFormat('{0}ВІ + {1}ВІ = {2}ВІ', a, b, c);
end;
end.