Удалить все повторяющиеся результаты массива - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Промаялся уже очень долго, решил написать на форум. Необходимо, чтобы все повторяющиеся результаты массива (ac) удалялись. Вроде задача проста, а решить не могу.
Листинг программы
  1. uses crt;
  2. begin
  3. //Исходные условия
  4. var ab,bc,d,m,g,h,k:integer;
  5. var z,f,ac:real;
  6. k:=0;
  7. //Пробуем составить цикл подбора задач
  8. write('Сколько нужно задач? ');
  9. readln(g);
  10. write('Введите максимальную длинну AB ');
  11. readln(d);
  12. write('Введите максимальную длинну BC ');
  13. readln(m);
  14. h:=g*100;
  15. while k<>g do
  16. begin
  17. for var i:=1 to h do
  18. for var j:=1 to h do
  19. begin
  20. ab:=i;
  21. bc:=j;
  22. f:=ab*ab+bc*bc;
  23. ac:=SQRT(f);
  24. z:=frac(ac);
  25. if ab<d then
  26. if bc<m then
  27. if z=0 then
  28. begin
  29. write('При таком ab ',ab,' и bc ',bc,' ');
  30. write('Гипотенуза равна ');
  31. writeln(ac);
  32. k:=k+1;
  33. if k=g then exit
  34. end;
  35. end;
  36. end;
  37. end.

Решение задачи: «Удалить все повторяющиеся результаты массива»

textual
Листинг программы
  1. function SquareRoot(N : Integer) : Integer;
  2. begin
  3.   var R := 1;
  4.   var Q := 1;
  5.   var D := 1;
  6.   while Q < N do
  7.     begin
  8.       R += 1;
  9.       D += 2;
  10.       Q += D;
  11.     end;
  12.   Result := N = Q ? R : 0;
  13. end;
  14.  
  15. var
  16.   U : array [1..1000, 0..2] of Integer;
  17.   Usize : Integer := 0;
  18.  
  19. function Unical(a, b, c : Integer) : Boolean;
  20. begin
  21.   Result := False;
  22.   for var i := 1 to Usize do
  23.     if (U[i, 0] = a) and (U[i, 1] = b) and (U[i, 2] = c) then
  24.       Exit;
  25.   Usize += 1; U[Usize, 0] := a; U[Usize, 1] := b; U[Usize, 2] := c;
  26.   Result := True;
  27. end;
  28.  
  29. begin
  30.   var aMax := ReadLnInteger('Максимальная длина первого катета a=');
  31.   var bMax := ReadLnInteger('Максимальная длина второго катета b=');
  32.   for var a := 1 to aMax do
  33.     for var b := 1 to bMax do
  34.       begin
  35.         var c := SquareRoot(a*a + b*b);
  36.         if c > 0 then
  37.           if Unical(a, b, c) and Unical(b, a, c) then
  38.             WriteLnFormat('{0}ВІ + {1}ВІ = {2}ВІ', a, b, c);
  39.       end;
  40. end.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.875 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы