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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.09.2011, 12:45   #1
Develope
Новичок
Джуниор
 
Регистрация: 19.09.2011
Сообщений: 2
По умолчанию В какую область попадает точка?

Для действительных х и у, определяющих координату точки A(x,y) в декартовых координатах, определить значение SPO.
Мои наработки, но , наверное. само математическое решение не идеальное, так как всегда получается красная зона.
Код:
#include "stdafx.h"
#include <iostream>
#include <exception>
#include "math.h"
/*1-red
2-blue
3-yellow
4-othe white */
//
int _tmain(int argc, _TCHAR* argv[])
{
	double R,cR;// R1<R2. Y.
	double X,X1,Y2,Y; //dotX, dotY
	double spo;
	int    white,blue,red,yel,other,color;
	
	std::cout<<"Enter R  and point X point Y values (ex.: '5 4 -4')"<<"\n";
	std::cin>>R>>X>>Y;
	cR = sqrt((pow(-R-Y,2)+pow (R-X,2))) ;
	if (cR > R) 
	{
		color = 3;
	}
	
	if   (sqrt(pow(X-R,2)+pow(Y+R,2))<=R)     //Kvadrat
	color = 4;
	if    ((Y>= X-R) && ((pow(X-R,2)+pow(Y+R,2)) <=(R*R)))// blue up
	{
		color = 2;
	}
	if    ((Y<=(X-2*R)) && ((pow(X-R,2)+pow(Y+R,2)) <=(R*R))) // blue down
	{
		color = 2;
	}
	if    ((( Y>=(-X + R)) && ( (pow (X-R,2) + pow(Y+R,2) ))) <=R*R);// red up
	{
		color = 1;
	}
	if    ((((-X-R)>=Y) && (pow (X-R,2)+ (pow (Y+R,2)))<=R*R))  //red down 
	{
		color = 1;
	}
std::cout<< color;
	
	switch(color)
	{
	
	case 1: std::cout<<"Point`s zone is red"<<"\n"; spo = (X+10)/(X+Y); break;
	case 2: std::cout<<"Point`s zone is blue"<<"\n"; spo = (X+1)/Y; break;
	case 3: std::cout<<"Point`s is yellow "<<"\n"; spo = X/(Y-X); break;
	default: std::cout<<"Point`s zone is other"<<"\n"; spo = X*Y;break; 
	}
	
	return 0;
}
Изображения
Тип файла: jpg zada.jpg (14.1 Кб, 62 просмотров)
Develope вне форума Ответить с цитированием
Старый 19.09.2011, 17:41   #2
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

И так сначала.
Определение положения точки.
Для этого необходимы уравнения и неравенства заданных областей.
1)Точка попадает в окружность, если 0<=X<=2*R,-2*R<=X<=0 и выполняется уравнение окружности (Х-R)^2+(Y-R)^2<=R^2.
2)В области синего - при наложении на первое условие следующих
при 0<=X<=R Y>=X-R
при R<X<=2*R Y<=X-3*R
3) В области красного - при наложении на первое условие следующих
при 0<=X<=R Y<= -X-R
при R<X<=2*R Y>= R-X
4) В области желтого при X<0, Y>0, и если (Х-R)^2+(Y-R)^2>R^2 при X>R или при
0<=X<=R и Y<-R.
5) Во всех остальных белый.

Хотя с уравнениями прямых может и ошибаюсь проверьте.
Исходя из этого программа выглядит где-то так
Код:
#include <iostream>
#include <exception>
#include "math.h"
/*1-white
2-blue
3-redy
4-ellow*/
//
int main(int argc, _TCHAR* argv[])
{
using namespace std;
	double R,S,S1;            // R1<R2. Y.
	double X,Y,spo;       //dotX, dotY
	int    wh,bl,r,ye,col;

	cout<<"Enter R  and point X point Y values (ex.: '5 4 -4')"<<endl;
	cin>>R>>X>>Y;
        if((X<0 )|| (Y>0))
        col = 4;
       else
        {
        S=pow((X-R),2)+pow((Y+R),2);

        if (S > pow(R,2))
	{
         if (((X>=0 && X<R)&& Y<(-R))||(X>R))
             col = 4;
         else
	     col = 1;
	}
        else
        if (X>0&&X<R)
        {
        if (Y>=(X-R))
            col = 2;
         else
          if (Y<=(-X-R))
             col = 3;
         }
       else
        if (X>R && X<2*R)
        {
        if (Y<=(X-3*R))
            col = 2;
         else
          if (Y>=(R-X))
             col = 3;
         }
        else
             col = 1;

 }

cout<< col;

	switch(col)
	{

	case 1: spo = X*Y;break;
	case 2: spo = (X+1)/Y; break;
	case 3: spo = (X+10)/(X+Y); break;
	case 4: spo = X/(Y-X); break;
	}
cout<< spo;
	return 0;
 }
Только проверьте правильность всех цветов и вычислений.
И перед выходом поставьте паузу или ожидание ввода символа, чтобы посмотреть результат.
Неприятности приходят и уходят, а жизнь продолжается!

Последний раз редактировалось Sweta; 20.09.2011 в 12:39.
Sweta вне форума Ответить с цитированием
Старый 19.09.2011, 22:11   #3
Develope
Новичок
Джуниор
 
Регистрация: 19.09.2011
Сообщений: 2
По умолчанию

Спасибо за код, но и ваши решения не проходят тестов. В частности на синий и желтій цвет.
Develope вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дана точка с координатами X,Y определить, попадает ли она в область плоскости rager06 Паскаль, Turbo Pascal, PascalABC.NET 4 01.06.2011 17:29
попадает ли точка в область pascal evklid Помощь студентам 11 04.10.2010 15:46
Попадает ли точка в область... kiborrgg Помощь студентам 4 02.10.2010 17:23
Попадает ли точка в...... Runner Помощь студентам 8 25.06.2010 22:27
Опредилите попадает ли точка с координатами(х,у) в круг радиуса R Dog Помощь студентам 2 19.05.2008 19:14