Проверка попадания точки в область на плоскости - 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
. - Функция может быть использована для определения, находится ли точка внутри заданного угла или сектора плоскости.
- Функция может быть использована для определения, находится ли точка внутри заданного прямоугольного координатного пространства.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д