Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.10.2008, 06:41   #1
#Nii
Пользователь
 
Аватар для #Nii
 
Регистрация: 16.10.2008
Сообщений: 11
По умолчанию Попадание точки в заштрихованную область (программа на условие), C++ 3.1

Привет всем!

Вот интересует сия задача с таким текстом

Дана область (рис 1. в прикреплениях) в круге который пересекает линия под 45 градусов. Радиус круга 2 см. Круг также удален на +1 см от X, и на +1 см от Y от нуля.
Требование такое:
После запуска программы надо ввести координаты точки (x,y) при нахождении ее в области ответом должно быть "Истина" в противном случае "Ложь".

Каким-то мне не понятным образом надо засунуть туда уравнение круга X(в квадрате)+Y(в квадрате) = R(в квадрате) т.е. X2+Y2=R2 , в данном случае это 1+1=2. А уровнение линии знаю только X+Y=Z что-то в этом роде. Вот незнаю как круг отметить в программе и пересекающую линию и как эту область потом в программе выделить.

include<stdio.h>
include<math.h>
include<iostream.h>
main()
{int x,y,z;
cout<<"Введите координаты x,y";
cin>>x>>y;

ввели координаты а дальше вроде как надо уровнение круга вписать, незнаю как

Вроде как в таком же роде http://dmtsoft.ru/bn/85/as/oneaticleshablon/



По-моему должен быть такой алгоритм

1. Решаем попадает ли точка в круг.
2. Попадает ли точка в заданную полу плоскость.
3. Если по первым двум пункта "истина", то ответ истина.

1. Если расстояние от точки до центра груга меньше или равно радиуса, то точка в круге.
2. Если (k*x+a - уравнение прямой) k*x1+a -y1 <= 0 , то точка входит в полуплоскость.
Только вот что обозначить в k*x1+a -y1 за k и a? и x1 и y1? в задаче
подскажите кто что знает

Последний раз редактировалось #Nii; 16.10.2008 в 07:05.
#Nii вне форума Ответить с цитированием
Старый 16.10.2008, 14:49   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

направление мысли верное.
Вам надо если точка попадает ТОЧНО на границу - это считать за попадание в область...
теперь по поводу решения.
1) уравнение Вашей линии y=x
для точка (x1,y1) подставляйте в уравнение, если y1<x1, то точка НИЖЕ линии (т.е. попадает в вашу полуплоскость)
2) для круга: проверяйте расстояние от центра, если оно меньше радиуса, то точка попадает в круг
if sqrt((x1-x0)^2 + (y1-y0)^2) < К - то попали...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.10.2008, 20:22   #3
#Nii
Пользователь
 
Аватар для #Nii
 
Регистрация: 16.10.2008
Сообщений: 11
По умолчанию

Вот более менее исходник похожий на правду

Код:
#include <stdlib.h>
#include <iostream.h>
#include <math.h>
#include <conio.h>

#define R 2.0
#define X0  1.0
#define Y0  1.0

int main(int argc, char **argv)
{clrscr();
  double x = atof(argv[1]);
    double y = atof(argv[2]);
    if (argc < 3)
    {
	cout<<"vvedite koordinati x,y";
cin>>x>>y;




    if (x<y)
    {
	cout<<"Tochka ne nad pryamoy"<<endl;

    }

  else if (pow((x-X0),2)+pow((y-Y0),2)>pow(R ,2))
    {
	cout<<"Mazila!"<<endl;

    }
  else
    cout<<"Sniper!"<<endl;
    getch();


}}
А вот еще один исходник, вот этот определяет точку только в круге но не в заштрихованной области

Код:
#include<iostream.h>
#include<math.h>
#include<stdio.h>
#include<conio.h>
main()
{clrscr();
int r;
double x,y;
r=2;
cout<<"vvedi suka bistro x,y:";
cin>>x>>y;
if (r*r>=(x-1)*(x-1)+(y-1)*(y-1))
cout<<"tochka v oblasti";
else
cout<<"tochka ne v oblasti";
getch();
}

Последний раз редактировалось #Nii; 16.10.2008 в 20:27.
#Nii вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти координаты хотя бы одной точки, попадающей в область, образованную тремя пересекающимися линиями. Zibiv Помощь студентам 1 03.10.2008 17:55
Область применения переменных ixs Общие вопросы Delphi 2 05.06.2008 18:00
Отбражение чисел - точки, это точки, а не запятые, обозначающие дробную часть Дикий Помощь студентам 7 12.05.2008 17:57
Область заголовка окна HunterMan Win Api 3 14.04.2008 15:37
область видимости ? artem779 Общие вопросы Delphi 3 14.09.2007 09:34