Найти в массиве точки, которые принадлежат кругу радиуса r с центром в начале координат - PascalABC.NET

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

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

Народ, помогите с задачей в голову ничего не приходит.. { Даны натуральное число n, действительные числа r,A1,..,An, где 2<=n<=50. Найти точки (A1,An), (A2,An-1),...,(An,A1) Которые принадлежат кругу радиуса r с центром в начале координат, и определить их количество. Кроме того, сформировать последовательность B1,...,Bn из отсортированных в порядке возрастания элементов исходной последовательности. }

Решение задачи: «Найти в массиве точки, которые принадлежат кругу радиуса r с центром в начале координат»

textual
Листинг программы
  1. function inCircle(x, y, r : Real) : Boolean := sqr(x) + sqr(y) <= sqr(r);
  2.  
  3. begin
  4.   var n := ReadLnInteger('n =');
  5.   var r := ReadLnReal('r =');
  6.   var a : array of Real;
  7.   SetLength(a, n);
  8.   for var i := 1 to n do
  9.     a[i-1] := ReadLnReal('A' + i + ' =');
  10.   WriteLn('a = ', a);
  11.   var s : string := '';
  12.   var count := 0;
  13.   for var i := 0 to n-1 do
  14.     if inCircle(a[i], a[n-1-i], r) then
  15.       begin
  16.         count += 1;
  17.         s += ' (' + a[i] + ',' + a[n-1-i] + ')';
  18.       end;
  19.   if count = 0 then
  20.     WriteLn('Нет точек принадлежащих окружности.')
  21.   else
  22.     WriteLn('Количество точек принадлежащих окружности ' + count + NewLine + s);
  23.   var b : array of Real;
  24.   SetLength(b, n);
  25.   b[0] := a[0];
  26.   for var i := 1 to n-1 do
  27.     begin
  28.       var j := i;
  29.       while (j > 0) and (b[j - 1] > a[i]) do
  30.         begin
  31.           b[j] := b[j - 1];
  32.           j -= 1;
  33.         end;
  34.       b[j] := a[i];
  35.     end;
  36.   WriteLn('b = ', b);
  37. end.

Объяснение кода листинга программы

  1. Задаются параметры функции: x, y, r (строка с номером 1).
  2. Функция inCircle проверяет принадлежит ли точка с координатами (x, y) кругу с радиусом r и центром в начале координат (строка с номером 2).
  3. Запрашивается количество точек (n) для проверки (строка с номером 3).
  4. Запрашиваются координаты точек (a) (строка с номером 4).
  5. Считается и выводится количество точек принадлежащих окружности (строка с номером 5).
  6. Выводится сообщение о количестве точек принадлежащих окружности и их координатах (строка с номером 6).
  7. Запрашивается количество точек (n) для сортировки (строка с номером 7).
  8. Создается массив b, повторяющий массив a, кроме последней точки (строка с номером 8).
  9. Массив b сортируется по возрастанию координаты x (строка с номером 9).
  10. Выводится отсортированный массив b (строка с номером 10).

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


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

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

7   голосов , оценка 3.571 из 5

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

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

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