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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2011, 23:58   #1
protozyabr
 
Регистрация: 14.10.2011
Сообщений: 3
Восклицание Гляньте кто шарит

Дана точка на плоскости с координатами (х, у). Составить алгоритм, который выдает сообщение "Да" если точка лежит внутри заштрихованной области, "Нет" – если точка лежит вне заштрихованной области, "На границе" – если точка лежит на границе заштрихованной области.


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

Вот сам мой код:
Цитата:
#include <iostream>
using namespace std;
main()
{
double x,y;
cout<<"Vvedite x: "<<endl;
cin>>x;
cout<<"Vvedite y "<<endl;
cin>>y;
if ((((x*x+y*y)*1/2)>5) && (((x*x+y*y)*1/2)<10) && (y>0))
cout<<"DA"<<endl;
else
if ((((x*x+y*y)*1/2)==5) && (((x*x+y*y)*1/2)==10) && (y>0))
cout<<"Na granice"<<endl;
else cout<<"HET"<<endl;
system("pause");
}
Заранее спасибо!
protozyabr вне форума Ответить с цитированием
Старый 28.10.2011, 00:23   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Код:
((x*x+y*y)*1/2)
Это не корень из суммы квадратов, это среднее арифметическое квадратов.
Проще всего сравнивать сумму квадратов координат с квадратом радиуса. И поставьте операторные скобки {} для if-else, они уменьшат шансы запутаться в будущем.

Также обращаю внимание, что точка лежит на границе, если она ЛИБО принадлежит меньшей дуге (принадлежит окружности И находится в верхней полуплоскости), ЛИБО принадлежит большей дуге, ЛИБО (что пропущено?).
Эту проверку (а заодно и проверку на попадание внутрь) советую вынести в отдельную функцию (принимающую координаты и возвращающую bool) и назвать её "говорящим" образом (PointIsOnBorder или, на худой конец, TochkaNaGranice, хотя транслит вообще-то безобразие) - это заметно повысит читаемость кода, а заодно потом позволит намного легче перейти от верхней задачи к нижней.
Abstraction вне форума Ответить с цитированием
Старый 28.10.2011, 00:51   #3
Ezhuk
Форумчанин
 
Регистрация: 09.10.2010
Сообщений: 217
По умолчанию

для первого берешь формулe окружности x^2+y^2==R^2
И аккуратно расписываешь все условия
На границе:
1) лежит на большей окружности
2) лежит на меньшей окружности
3) лежит на оси Ox
Внутри:
1) внутри большей и снаружи меньшей окружности

Где R^2 лучше сразу писать 25 и 100, а не 5*5 и 10*10.

Для второго все проще.
Ёж птица гордая, пока не пнешь не полетит.
Ezhuk вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
указатель на функию..Кто шарит Sbenya Общие вопросы C/C++ 12 11.07.2011 11:12
Ребят, кто шарит в С++ загляните... брилиант Помощь студентам 7 04.05.2011 16:31
Кто шарит в 3D, ткните в литературу mutabor Свободное общение 0 03.03.2011 18:19
Кто шарит в PHP Simply-Art PHP 3 20.05.2007 21:01