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

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

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

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

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

textual
Листинг программы
function inCircle(x, y, r : Real) : Boolean := sqr(x) + sqr(y) <= sqr(r); 
 
begin
  var n := ReadLnInteger('n =');
  var r := ReadLnReal('r =');
  var a : array of Real;
  SetLength(a, n);
  for var i := 1 to n do
    a[i-1] := ReadLnReal('A' + i + ' =');
  WriteLn('a = ', a);
  var s : string := '';
  var count := 0;
  for var i := 0 to n-1 do
    if inCircle(a[i], a[n-1-i], r) then
      begin
        count += 1;
        s += ' (' + a[i] + ',' + a[n-1-i] + ')';
      end;
  if count = 0 then
    WriteLn('Нет точек принадлежащих окружности.')
  else
    WriteLn('Количество точек принадлежащих окружности ' + count + NewLine + s);
  var b : array of Real;
  SetLength(b, n);
  b[0] := a[0];
  for var i := 1 to n-1 do
    begin
      var j := i;
      while (j > 0) and (b[j - 1] > a[i]) do
        begin
          b[j] := b[j - 1];
          j -= 1;
        end;
      b[j] := a[i];
    end;
  WriteLn('b = ', b);
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
Похожие ответы