Сколько среди заданных точек таких, которые принадлежат кругу радиусом R с центром в начале координат? - C (СИ)
Формулировка задачи:
Даны натуральное число n,действительные числа r1,a1,...an(n>=2). Сколько среди точек (a1,an),(a2,an-1),...(an,a1) таких, которые принадлежат кругу радиуса r с центромв начале координат?
Решение задачи: «Сколько среди заданных точек таких, которые принадлежат кругу радиусом R с центром в начале координат?»
textual
Листинг программы
#include <stdio.h>
int main( void ){
int n, i, j;
float r;
scanf("%d %f", &n, &r);
float *a;
a = (float *) malloc(n * sizeof(float));
for (i = 1; i <= n; i++)
scanf("%f", &a[i]);
i = 0;
j = n + 1;
int k = 0;
while (i != (n / 2 + n % 2)){
i++;
j--;
if (a[i]*a[i] + a[j]*a[j] <= r*r)
k++;
}
printf("%d", k);
return(0);
}
Объяснение кода листинга программы
В этом коде:
- Сначала объявляются переменные:
n- количество точекiиj- индексы точекr- радиус кругаa- массив для хранения координат точек
- С помощью функции
scanfвводятся значения переменныхnиr. - Динамически выделяется память под массив
aс помощью функцииmalloc. - В цикле
forс помощью функцииscanfв массивaсчитываются координаты точек. - Переменные
iиjинициализируются, а переменнаяkобнуляется. - В цикле
whileпроверяется, есть ли точка с индексомiна заданном круге. Если да, то переменнаяkувеличивается на единицу. - После выхода из цикла
whileвыводится значение переменнойk, которое и является ответом на задачу.