Проверка попадания точки в область на плоскости - C (СИ) (72418)
Формулировка задачи:
Всем привет, помогите составить программу для лабораторной, не справляюсь.
1-я часть готова
==============
Для функции (на картинке 1) составить программу построения таблицы значений функции, состоящую из n строк при изменении аргументов от A до B.
В каждой строке выводить значение аргумента x и соответствующие ему значение функции y в форматированном виде с 4 знаками после запятой.В конце таблицы отдельной строкой вывести среднее арифметическое всех значений функции.
==============
Осталось только это доп. задание:
На выбор одно из двух:
1) Кроме того, программа должна определить, сколько точек с координатами( x,y) из полученной таблицы попадает внутрь области, ограниченной фигурой( на картинке 2).
2) Кроме того, программа должна определить, сколько точек с координатами (x,y) из полученной таблицы попадает внутрь области, ограниченной фигурой (-10,-6),(-10,4),(0,4),(0,-6).
==============================
Вот 1-я часть:
#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#define N 2
#define A 1
#define B 9
#define STEP 1
main()
{
double x,y;
double e=2.1718281828;
int numbers=0;
double sum=0;
double arif=0;
x=A;
for(int i=0; i < N && fabs(x) < B; i++)
{
y=x*exp(x)+2*sin(x)-sqrt(fabs(x*x*x-x*x));
printf("X is %f\tY is %.4f\n",x,y);
numbers++;
sum+=y;
x+=STEP;
}
arif=(double)sum/numbers;
printf("Arifm: %f",arif);
getch();
}
int IsThere(double x, double y)
{
if(x > 0)
{
if(y < 1 && y > 0)return 1;
}
else if(x < 0)
{
if(sqrt(pow(x,2)+pow(y,2)) < 1)return 1;
}
return 0;
}Решение задачи: «Проверка попадания точки в область на плоскости»
textual
Листинг программы
int IsThere(double x, double y)
{
if ((x<0 && x>-1 && y>0 && y<1) ||
(x>0 && y<0 && x*x+y*y < 1)) return 1;
else return 0;
}
Объяснение кода листинга программы
- Функция
IsThereпринимает два аргумента типаdouble-xиy. - В функции используется условие, которое проверяет, попадает ли точка с координатами
xиyв заданную область на плоскости. - Условие состоит из двух частей, объединенных оператором
||(логическое ИЛИ). - Первая часть проверяет, что
xменьше 0 и больше -1, аyбольше 0 и меньше 1. - Вторая часть проверяет, что
xбольше 0, аyменьше 0 и квадратxплюс квадратyменьше 1. - Если условие выполняется, функция возвращает 1, иначе возвращает 0.
- Функция не использует циклы или другие функции, только базовые математические операции.
- Функция может быть использована для проверки, является ли точка в заданной области на плоскости, например, для определения, является ли точка внутри прямоугольника или вне его.
- Значения
xиyдолжны быть числами типаdouble, чтобы обеспечить точность вычислений. - Заданная область на плоскости определяется границами значений
xиy, которые задаются в условии функции. - Функция может быть вызвана с разными значениями
xиyдля проверки попадания точки в область. - Функция не обрабатывает ошибки или исключения, предполагается, что аргументы
xиyявляются действительными числами. - Функция может быть использована в других программах или скриптах для проверки попадания точек в область на плоскости.
- Код функции написан на языке C и использует только базовые конструкции языка, такие как условные операторы и операторы присваивания.
- Функция может быть оптимизирована для улучшения производительности, например, путем удаления избыточных проверок или использования более эффективных алгоритмов.
- Значения
xиyмогут быть получены из пользовательского ввода или из других частей программы для более сложной логики проверки. - Функция может быть использована для определения, находится ли точка внутри заданной фигуры, такой как круг, треугольник или прямоугольник.
- Функция может быть использована для определения, находится ли точка внутри заданного диапазона значений
xиy. - Функция может быть использована для определения, находится ли точка внутри заданного угла или сектора плоскости.
- Функция может быть использована для определения, находится ли точка внутри заданного прямоугольного координатного пространства.