Программирование ветвлений

 

Задача № 1. Определить, попадет ли точка с координатами (х, у) в заштрихованную область (рис. 19).

 

Рис. 19. Границы области для задачи №1

Исходные данные: х, у

Результат: да или нет

Математическая модель:

Ok=I || II || III || VI, где I, II, III, IV – условия попадания точки в заштрихованную область для каждого квадранта.

Квадрант I: Область формируется прямыми 0Х и 0У, прямой, проходящей через точки (0,1) и (1,0) и прямой, проходящей через точки (0,3) и (2,0).

Необходимо определить уравнения прямых y = a x + b . Решаем две системы уравнений:

 

Из этих систем получаем следующие уравнения прямых:

y=−1х +1;

y=− х +1;

Тогда условие попадания точки в I квадрант будет выглядеть следующим образом:

y>=-x+1&&y<=-2/3x+2&&y>=0&&x>=0.

 

Квадранты II и III: Область формируется прямыми 0Х и 0У и двумя окружностями, описываемыми формулами x2 + y2 = 1, x2 + y2 = 9.

Тогда условие попадания точки во II и III квадранты будет выглядеть следующим образом:

x2+y2>=1&&x2+y2<=9&&x<=0.

Квадрант IV:

Область формируется двумя прямоугольниками. Точка может попадать либо в первый прямоугольник, либо во второй.

Условие попадания точки в IV квадрант будет выглядеть следующим образом:

(x>=0&&x<=1&&y<=-1&&y>=-3)||(x>=1&&x<=3&&y<=0&&y>=-3).

 

Программа:

#include <iostream.h>

#include <math.h>

void main()

{

float x,y;

cout<<«\nEnter x,y»;

cin>>x>>y;

bool Ok=(y>=-x+1&&y<=2/3*x+2&&x>=0&&y>=0)||

(pow(x,2)+pow(y,2)>=1&&pow(x,2)+pow(y,2)<=9&&x<=0)||

(x>=0&&x<=1&&y<=-1&&y>=-3)||

(x>=1&&x<=2&&y<=0&&y>=-3);

cout<<«\n»<<Ok;

}

 

Тесты приведены в табл. 12.

Таблица 12

Тесты к задаче №1