Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/30: Рейтинг темы: голосов - 30, средняя оценка - 4.63
21 / 18 / 4
Регистрация: 07.04.2010
Сообщений: 806
1

Составьте программу, которая определяет, принадлежит ли точка с координатами (x, y) одной из указанных областей

15.10.2012, 19:23. Показов 5548. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер товарищи, есть такая задачка

Составьте программу, которая определяет, принадлежит ли точка с координатами (x, y) одной из указанных областей.

Не могу понять, как тут действовать правильно!Помогите, пожалуйста...
Рисунок приложен...
Нужна внутренняя сторона...
Миниатюры
Составьте программу, которая определяет, принадлежит ли точка с координатами (x, y) одной из указанных областей  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.10.2012, 19:23
Ответы с готовыми решениями:

Составьте программу, которая определяет, принадлежит ли точка с координатами (x, y) области
Dmitrinik, помогите пожалуйста еще с одним графиком

Принадлежит ли точка с координатами (x, y) одной из указанных областей?
Составьте программу, которая определяет, принадлежит ли точка с координатами (x, y) одной из...

Определить, принадлежит ли точка с координатами (x, y) одной из указанных областей.
Здравствуйте уважаемые программисты! помогите решить ряд задач! 1. Составьте программу, которая...

Определить, принадлежит ли точка с координатами (x, y) одной из указанных областей
1.Составьте программу, которая определяет, принадлежит ли точка с координатами (x, y) одной из...

16
539 / 399 / 99
Регистрация: 18.08.2012
Сообщений: 1,024
15.10.2012, 20:02 2
По такому рисунку трудно определить. Где же сама область (надо бы "залить" ее другим цветом) и что такое d?
0
21 / 18 / 4
Регистрация: 07.04.2010
Сообщений: 806
15.10.2012, 20:12  [ТС] 3
На D можно внимания не обращать, а принадлежать точка должна области в окружности где стоят точки а и -а

Добавлено через 2 минуты
Может поможет система неравенств такая
(x-a)+y<=R
(x-a)+y<=R

Добавлено через 1 минуту
(x-a)2+y2>=R21
(x-a)2+y2<=R22
0
539 / 399 / 99
Регистрация: 18.08.2012
Сообщений: 1,024
15.10.2012, 20:18 4
Например так, как на рисунке.
Миниатюры
Составьте программу, которая определяет, принадлежит ли точка с координатами (x, y) одной из указанных областей  
1
21 / 18 / 4
Регистрация: 07.04.2010
Сообщений: 806
15.10.2012, 22:27  [ТС] 5
Цитата Сообщение от sergei3ru Посмотреть сообщение
(x-a)2+y2<=R22
Данная формула верна?
0
539 / 399 / 99
Регистрация: 18.08.2012
Сообщений: 1,024
15.10.2012, 22:44 6
Да, вот эта пара неравенств с уравнениями окружностей - это близко к тому, что нужно. Ну вот так.
Точка https://www.cyberforum.ru/cgi-bin/latex.cgi?({x}_{*},{y}_{*}) попадет в левый круг или на его границу, если
https://www.cyberforum.ru/cgi-bin/latex.cgi?{({x}_{*}+a)}^{2}+{{y}_{*}}^{2}\leq {R}^{2}
Точка (x,y) попадет в правый круг или на его границу, если
https://www.cyberforum.ru/cgi-bin/latex.cgi?{({x}_{*}-a)}^{2}+{{y}_{*}}^{2}\leq {R}^{2},
где R - радиус окружностей.
Значит, если выполняется одно из этих неравенств и при этом https://www.cyberforum.ru/cgi-bin/latex.cgi?{y}_{*}<0, то точка уже принадлежит нужной области.
Если же https://www.cyberforum.ru/cgi-bin/latex.cgi?{y}_{*}\geq 0, то надо исключить равнобедренный треугольник. Для этого сначала надо найти верхнюю общую точку пересечения окружностей с осью Oy. При x=0 получаем
https://www.cyberforum.ru/cgi-bin/latex.cgi?{y}_{1}=\sqrt{{R}^{2}-{a}^{2}}
Теперь уравнения левой и правой сторон треугольника есть соответственно
https://www.cyberforum.ru/cgi-bin/latex.cgi?y=\frac{{y}_{1}}{a}x+{y}_{1}
и
https://www.cyberforum.ru/cgi-bin/latex.cgi?y=-\frac{{y}_{1}}{a}x+{y}_{1}
Если https://www.cyberforum.ru/cgi-bin/latex.cgi?{x}_{*}<0 и https://www.cyberforum.ru/cgi-bin/latex.cgi?{y}_{*}\geq 0 и https://www.cyberforum.ru/cgi-bin/latex.cgi?{y}_{*}<\frac{{y}_{1}}{a}{x}_{*}+{y}_{1}, то точка попала в треугольник
Если https://www.cyberforum.ru/cgi-bin/latex.cgi?{x}_{*}\geq0 и https://www.cyberforum.ru/cgi-bin/latex.cgi?{y}_{*}\geq 0 и https://www.cyberforum.ru/cgi-bin/latex.cgi?{y}_{*}<-\frac{{y}_{1}}{a}{x}_{*}+{y}_{1}, то точка также попала в треугольник, а , значит, не попала в нужную нам область.
Получилось довольно наворочено, но тут уж ничего не поделаешь. Это если обе окружности одного диаметра (как на рисунке)
1
21 / 18 / 4
Регистрация: 07.04.2010
Сообщений: 806
15.10.2012, 22:53  [ТС] 7
Спасибо огромное и как тебе всю эту красоту в код превратить?
0
539 / 399 / 99
Регистрация: 18.08.2012
Сообщений: 1,024
15.10.2012, 23:03 8
Только за чашечку кофия. А теперь пора
0
21 / 18 / 4
Регистрация: 07.04.2010
Сообщений: 806
16.10.2012, 12:53  [ТС] 9
Вот у меня получилась такая красотень...
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
program z1;
var
x1,y1,y2,a,r:real;
begin
readln(x1,y1,y2);
readln(r,a);
if (sqr(x1+a)+y1*y1<=r*r) and
(sqr(x1-a)+y1*y1<=r*r) and
(y1<0)  then  writeln('Лежит')
else if (x1>=0) and (y1>=0) and  (y1<(y2/a)*x1+y2) then writeln('Не лежит')
else writeln ('Не лежит);
end.

Правильно?
0
539 / 399 / 99
Регистрация: 18.08.2012
Сообщений: 1,024
16.10.2012, 14:19 10
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
...........
y1:=Sqrt(Sqr(r)-Sqr(a));
If (sqr(x+a)+y*y<=r*r) OR
   (sqr(x-a)+y*y<=r*r) then 
  If y<=0 then
    Begin
       {попала}
    end
  Else
    If ((x<0)   AND (y>=y1+y1*x/a)) OR
       ((x>=0) AND (y>=y1-y1*x/a)) then
    Begin
       {попала}
    end;
..........
0
21 / 18 / 4
Регистрация: 07.04.2010
Сообщений: 806
16.10.2012, 16:01  [ТС] 11
Спасибо огромное, это после какой строчки вставлять или это уже готовая версия?

Добавлено через 12 минут
ТО есть y1 мы не вводим, а присваиваем значение ему, так?Можете, пожалуйста, вставить этот кусок куда нужно, а то как не понятно...

Добавлено через 1 час 23 минуты
А мой код в чем-то правильный
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
program z1;
var
x1,y1,y2,a,r:real;
begin
readln(x1,y1,y2);
readln(r,a);
if (sqr(x1+a)+y1*y1<=r*r) and
(sqr(x1-a)+y1*y1<=r*r) and
(y1<0)  then  writeln('Лежит')
else if (x1>=0) and (y1>=0) and  (y1<(y2/a)*x1+y2) then writeln('Не лежит')
else writeln ('Не лежит);
end.
Добавлено через 54 секунды
Куда надо добавить Ваш код, подскажите, пожалуйста!

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
...........
y1:=Sqrt(Sqr(r)-Sqr(a));
If (sqr(x+a)+y*y<=r*r) OR
   (sqr(x-a)+y*y<=r*r) then 
  If y<=0 then
    Begin
       {попала}
    end
  Else
    If ((x<0)   AND (y>=y1+y1*x/a)) OR
       ((x>=0) AND (y>=y1-y1*x/a)) then
    Begin
       {попала}
    end;
..........
0
539 / 399 / 99
Регистрация: 18.08.2012
Сообщений: 1,024
16.10.2012, 16:43 12
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var
x, y, y1, a, r: real;
Into : boolean;
Begin 
readln(r,a);
readln(x,y);
 
Into:=false
y1:=Sqrt(Sqr(r)-Sqr(a));
If (sqr(x+a)+y*y<=r*r) OR
   (sqr(x-a)+y*y<=r*r) then 
  If y<=0 then Into:=True {попала}
  Else
    If ((x<0)   AND (y>=y1+y1*x/a)) OR
       ((x>=0) AND (y>=y1-y1*x/a)) then Into:=True; {попала}
If Into then writeln('Лежит')
Else writeln ('Не лежит);
ReadLn;
 
 
End.
1
21 / 18 / 4
Регистрация: 07.04.2010
Сообщений: 806
16.10.2012, 17:09  [ТС] 13
Урааа...заработала!Спасибо!Вы прямо гений!Благодарю!Теперь все уяснил!
0
6 / 6 / 0
Регистрация: 21.03.2012
Сообщений: 184
16.10.2012, 18:57 14
а проще никак нельзя ее решить?
0
539 / 399 / 99
Регистрация: 18.08.2012
Сообщений: 1,024
16.10.2012, 19:08 15
Цитата Сообщение от katya Посмотреть сообщение
а проще никак нельзя ее решить?
Нет, увы. (В 8-ой строке Into:=false забыл точку с запятой)
0
6 / 6 / 0
Регистрация: 21.03.2012
Сообщений: 184
16.10.2012, 19:11 16
вот это вот Into что оно обозначает, извините за такой может быть глупый вопрос, просто эту задачу не могу решить...придется делать так как вы написали...
0
539 / 399 / 99
Регистрация: 18.08.2012
Сообщений: 1,024
16.10.2012, 19:19 17
Цитата Сообщение от katya Посмотреть сообщение
вот это вот Into что оно обозначает, извините за такой может быть глупый вопрос, просто эту задачу не могу решить...придется делать так как вы написали...
Просто для удобства. Если точка попала, то делаем Into:=True;. А дальше это Into можно использовать по потребности.
1
16.10.2012, 19:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.10.2012, 19:19
Помогаю со студенческими работами здесь

Пожалуйста помогите Составьте программу, которая определяет, принадлежит ли точка с координатами (х,у)
Помогите пожалуйста)) Составьте программу, которая определяет, принадлежит ли точка с...

Написать программу с ++, которая определяет, принадлежит ли точка с координатами (x, y) заштрихованной области
почти час голову ломаю уже,помогите

Написать программу, которая определяет, принадлежит ли точка с координатами (x, y) заштрихованной области
И вот тут я запутался....требуется помощь Написать программу, которая определяет, принадлежит ли...

Написать программу, которая определяет, принадлежит ли точка с координатами (x, y) заштрихованной области D, и
Написать программу, которая определяет, принадлежит ли точка с координатами (x, y) заштрихованной...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru