Форум программистов, компьютерный форум CyberForum.ru

Определить, лежит точка внутри заштрихованной области, вне её или на её границе - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
martinishin
0 / 0 / 0
Регистрация: 20.10.2012
Сообщений: 12
20.10.2012, 21:51     Определить, лежит точка внутри заштрихованной области, вне её или на её границе #1
Дана точка на плоскости с координатами (х, у). Составить программу, которая выдает одно из сообщений "Да", "Нет", "На границе" в зависимости от того, лежит ли точка внутри заштрихованной области, вне заштрихованной области или на ее границе.
Изображения
 
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.10.2012, 21:51     Определить, лежит точка внутри заштрихованной области, вне её или на её границе
Посмотрите здесь:

C++ Даны отрезки [a, b] и [c, d] и точка A с координатой х. Определить, принадлежит ли данная точка одному из этих отрезков, обоим или лежит вне их
C++ Программа вычисления местонахождения точки относительно фигуры (лежит ли точка внутри, на контуре или вне фигуры)
Определить, лежит ли точка внутри или вне круга, ограниченного указанной окружностью, или на окружности C++
Определить лежит ли точка внутри или вне круга,ограниченного указанной окружностью, или на окружности C++
C++ Определить, лежит ли точка внутри заштрихованной области
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Psilon
Master of Orion
 Аватар для Psilon
5738 / 4686 / 619
Регистрация: 10.07.2011
Сообщений: 14,160
Записей в блоге: 5
Завершенные тесты: 4
20.10.2012, 22:05     Определить, лежит точка внутри заштрихованной области, вне её или на её границе #2
martinishin,
C++
1
2
3
4
5
6
7
8
int Check(int x, int y)
{
   if (x*x + y*y < 9 || x*x + y*y > 49 || x < 0 && y < 0)
      return -1;
   if (x*x + y*y > 9 && x*x + y*y < 49)
      return 1;
   return 0;
}
0 - на границе, 1 - внутри, -1 - не принадлежит
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
21.10.2012, 03:47     Определить, лежит точка внутри заштрихованной области, вне её или на её границе #3
Цитата Сообщение от Psilon Посмотреть сообщение
C++
1
2
if (x*x + y*y < 9 || x*x + y*y > 49 || x < 0 && y < 0)
 return -1;
эта часть не полностью описана, поэтому при x=0 и y=0 функция вернет 0.
Psilon
Master of Orion
 Аватар для Psilon
5738 / 4686 / 619
Регистрация: 10.07.2011
Сообщений: 14,160
Записей в блоге: 5
Завершенные тесты: 4
21.10.2012, 04:43     Определить, лежит точка внутри заштрихованной области, вне её или на её границе #4
valeriikozlov, ну так граница же, а x=0 && y=0 обработаются первым условием же и вернет -1..
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
21.10.2012, 05:01     Определить, лежит точка внутри заштрихованной области, вне её или на её границе #5
Цитата Сообщение от Psilon Посмотреть сообщение
ну так граница же, а x=0 && y=0 обработаются первым условием же и вернет -1..
да тут я промахнулся )
но лучше написать так:
C++
1
2
3
4
5
6
7
8
int Check(int x, int y)
{
   if (x*x + y*y < 9 || x*x + y*y > 49 || x < 0 && y < 0)
      return -1;
   if (x*x + y*y > 9 && x*x + y*y < 49 && ((x!=0 && y<0) || (y!=0 && x<0)))
      return 1;
   return 0;
}
для проверки:
x=0 y=-4
или
x=-4 y=0
Psilon
Master of Orion
 Аватар для Psilon
5738 / 4686 / 619
Регистрация: 10.07.2011
Сообщений: 14,160
Записей в блоге: 5
Завершенные тесты: 4
21.10.2012, 11:44     Определить, лежит точка внутри заштрихованной области, вне её или на её границе #6
valeriikozlov, зачем? В первом условии вычеркивается внутренний круг, внешний круг и 3 четверть. Дальше с x и y вообще париться не надо: достаточно попадания в кольцо. Придумайте входные данные, где моя программа даст сбой, мне даже интересно. Последнее условие у вас выкинет точку 4,4 например...
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
21.10.2012, 12:49     Определить, лежит точка внутри заштрихованной области, вне её или на её границе #7
Цитата Сообщение от Psilon Посмотреть сообщение
Придумайте входные данные, где моя программа даст сбой, мне даже интересно.
я же их писал:
Цитата Сообщение от valeriikozlov Посмотреть сообщение
для проверки:
x=0 y=-4
или
x=-4 y=0
крайний вариант:
C++
1
2
3
4
5
6
7
8
int Check(int x, int y)
{
   if (x*x + y*y < 9 || x*x + y*y > 49 || x < 0 && y < 0)
      return -1;
   if (x*x + y*y > 9 && x*x + y*y < 49 && !((x==0 && y<0) || (y==0 && x<0)))
      return 1;
   return 0;
}
Psilon
Master of Orion
 Аватар для Psilon
5738 / 4686 / 619
Регистрация: 10.07.2011
Сообщений: 14,160
Записей в блоге: 5
Завершенные тесты: 4
21.10.2012, 12:56     Определить, лежит точка внутри заштрихованной области, вне её или на её границе #8
valeriikozlov, Да действительно, надо поправить.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
21.10.2012, 13:02     Определить, лежит точка внутри заштрихованной области, вне её или на её границе #9
C++
1
2
3
4
5
6
7
8
d2 = x*x + y*y;
if (d2 >= 9 && d2 <= 49 && !(x < 0 && y < 0))
{
    if (d2 > 9 && d2 < 49 && !(x == 0 && y < 0) && !(y == 0 && x < 0))
        да (внутри)
    else на границе
}
else нет
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.10.2012, 13:09     Определить, лежит точка внутри заштрихованной области, вне её или на её границе
Еще ссылки по теме:

C++ Определить, лежит ли точка внутри заштрихованной области
Лежит ли точка внутри заштрихованной области, вне заштрихованной области или на ее границе? C++
Определить лежит ли точка внутри, вне или на границе заштрихованной области C++

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

Или воспользуйтесь поиском по форуму:
Psilon
Master of Orion
 Аватар для Psilon
5738 / 4686 / 619
Регистрация: 10.07.2011
Сообщений: 14,160
Записей в блоге: 5
Завершенные тесты: 4
21.10.2012, 13:09     Определить, лежит точка внутри заштрихованной области, вне её или на её границе #10
Thinker, кстати да, расстояние лучше сразу запомнить

Добавлено через 6 минут
valeriikozlov, да, ваше условие вернее (последнее), хотя не мешало бы убрать лишние отрицания
Yandex
Объявления
21.10.2012, 13:09     Определить, лежит точка внутри заштрихованной области, вне её или на её границе
Ответ Создать тему
Опции темы

Текущее время: 09:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru