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