Определить, принадлежит ли точка с координатами (x, y) единичной окружности - C (СИ)
Формулировка задачи:
Всем привет. помогите понять задачу.
задача 1
Функции:
Описать логическую функцию Yes(x,y), которая определит, принадлежит ли точка с координатами (x,y) единичной окружности, центр которой совпадает с началом координат. Обратиться с координатами точек,
лежащими на параболе x=[-2;+2], шаг =0.5.
т.е. мне нужно задать окружность и параболу, и определить есть ли на промежутке x=[-2;+2], шаг =0.5. общие точки?
Решение задачи: «Определить, принадлежит ли точка с координатами (x, y) единичной окружности»
textual
Листинг программы
/*Описать логическую функцию Yes(x,y), которая определит, принадлежит ли точка с координатами (x,y) единичной окружности,
центр которой совпадает с началом координат. Обратиться с координатами точек, лежащими на параболе x=[-2;+2], шаг =0.5.
*/
#include <stdio.h>
#include <math.h>
/*парабола у = x^2*/
double Parabole (double x)
{ return x*x;
}
/*верхняя часть окружности x^2 + y^2 = 1*/
double UpperCircle (double x)
{ return sqrt(1 - x*x);
}
/*функция Yes*/
int Yes (double x, double y)
{ double epsilon = 0.05; /*точность для у*/
if (fabs (y - UpperCircle (x)) < epsilon)
return 1;
return 0;
}
int main()
{ double x = -2., step = 0.05; /*шаг для х*/
printf("x\t\ty\tYes/No as 1 or 0\n");
while (x < 2.05)
{ printf("%10.2lf%10.2lf%10d\n", x, Parabole(x), Yes(x, Parabole(x)));
x += step;
}
getchar();
return 0;
}
Объяснение кода листинга программы
- В начале определяются две функции:
Parabole, которая вычисляет значение параболыx^2, иUpperCircle, которая вычисляет верхнюю часть окружностиx^2 + y^2 = 1. - Затем определена функция
Yes, которая принимает координаты точки(x, y)и проверяет, принадлежит ли точка единичной окружности с центром в начале координат. Если расстояние от точки до окружности меньше заданной точностиepsilon, то функция возвращает1, иначе0. - В функции
mainзадаются начальные значенияxиstep, а также выводится шаблон вывода. - Затем в цикле
whileпроисходит обход всех точек на параболеx = [-2; +2]с заданным шагомstep. - Для каждой точки вычисляется значение параболы
Parabole(x), затем вызывается функцияYes, которая проверяет, принадлежит ли точка единичной окружности. Результат проверки выводится на экран. - В конце программы ожидается нажатие клавиши для выхода.