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

Попадание точки в закрашенную область - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Andrew_new
0 / 0 / 0
Регистрация: 30.03.2012
Сообщений: 5
27.09.2012, 19:55     Попадание точки в закрашенную область #1
Помогите решить пожалуйста, очень надо. Файл с заданием прикреплен ниже.Заранее спасибо.

Для действительных х и у, определяющих координату точки A(x,y) в декартовых координатах, определить значение SPO.
Попадание точки в закрашенную область
Название: 1.JPG
Просмотров: 280

Размер: 12.0 Кб
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
yleart
 Аватар для yleart
60 / 45 / 1
Регистрация: 07.10.2011
Сообщений: 139
27.09.2012, 20:17     Попадание точки в закрашенную область #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<iostream>
int main() {
    std::cout << "Enter x, y, R: ";
    double x = 0.0, y = 0.0, SPO = 0.0, R = 0.0;
    std::cin >> x >> y >> R;
    if (x*x + y*y >= R) {
        if ((x >= 0 && y > 0)||(x <= 0 && y < 0))
            SPO = x/y;
        if ((x >= 0 && y <= 0)||(x <= 0 && y >= 0))
            SPO = x + y;
    }
    else if (y != 0)
        SPO = x/y;
    std::cout << SPO << std::endl;
    return 0;
 
}
ValeryS
Модератор
6375 / 4841 / 443
Регистрация: 14.02.2011
Сообщений: 16,043
27.09.2012, 20:34     Попадание точки в закрашенную область #3
Цитата Сообщение от yleart Посмотреть сообщение
C++
1
2
3
4
if ((x >= 0 && y > 0)||(x <= 0 && y < 0))
 SPO = x/y;
 if ((x >= 0 && y <= 0)||(x <= 0 && y >= 0))
 SPO = x + y;
если х==0 а у не равно 0 то выполнятся оба условия
yleart
 Аватар для yleart
60 / 45 / 1
Регистрация: 07.10.2011
Сообщений: 139
27.09.2012, 20:39     Попадание точки в закрашенную область #4
Условию задачи это не противоречит.. Будет высчитано x+y
ValeryS
Модератор
6375 / 4841 / 443
Регистрация: 14.02.2011
Сообщений: 16,043
27.09.2012, 20:51     Попадание точки в закрашенную область #5
задачу я только сейчас увидел(сообщение редактировалось)
и тут же вопрос
а где у тебя
SPO = x*y; иначе
?
Цитата Сообщение от yleart Посмотреть сообщение
if (x*x + y*y >= R) {
да и здесь ты неправильно считаешь
если ты хочешь чтобы точка была внутри круга то правильное условие
if ((x*x + y*y )<= R*R)
yleart
 Аватар для yleart
60 / 45 / 1
Регистрация: 07.10.2011
Сообщений: 139
28.09.2012, 04:54     Попадание точки в закрашенную область #6
Так нормально?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<iostream>
#include<cmath>
double SPO (double x, double y, double R) {
  if ((x*x+y*y > R*R)&& fabs(x) <= R && fabs(y) <= R)
  {
    if ((x >= 0 && y > 0)||(x <= 0 && y < 0))
      return  x/y;
    if ((x >= 0 && y <= 0)||(x <= 0 && y >= 0))
      return x+y;
  }
  else if (y != 0)
    return x/y;
  return x*y;
}
int main() {
  std::cout << "Enter x, y, R:\n";
  double x = 0.0, y = 0.0, R = 0.0;
  std::cin >> x >> y >> R;
  std::cout << SPO(x, y, R) << std::endl;
}
Nixy
ComfyMobile
 Аватар для Nixy
399 / 280 / 8
Регистрация: 24.07.2012
Сообщений: 916
28.09.2012, 07:43     Попадание точки в закрашенную область #7
yleart, а ты проверь хотябы работу ,при х=0.1 и y=0.1 ,R=1,
очевидно, что при заданных условиях ,должно выдать деление, но получится ,что сумма квадратов x y меньше радиуса , y не равен 0 ,и вернет произведение
yleart
 Аватар для yleart
60 / 45 / 1
Регистрация: 07.10.2011
Сообщений: 139
28.09.2012, 11:26     Попадание точки в закрашенную область #8
12 строку глянь внимательнее
Nixy
ComfyMobile
 Аватар для Nixy
399 / 280 / 8
Регистрация: 24.07.2012
Сообщений: 916
28.09.2012, 19:51     Попадание точки в закрашенную область #9
Цитата Сообщение от yleart Посмотреть сообщение
12 строку глянь внимательнее
да чот я затупил , извените
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
29.09.2012, 08:49     Попадание точки в закрашенную область #10
Цитата Сообщение от yleart Посмотреть сообщение
Так нормально?
нет.
на самом деле это условие:
Цитата Сообщение от yleart Посмотреть сообщение
C++
1
if ((x*x+y*y > R*R)&& fabs(x) <= R && fabs(y) <= R)
попадания совсем в другой сектор. Рисуем квадрат у которого ребра параллельны (перпендикулярны) осям координат. В этот квадрат вписываем окружность. Так вот это условие попадания в квадрат, но не в круг.

Вот так будет правильнее:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<iostream>
#include<cmath>
double SPO (double x, double y, double R) {
  if (x*x+y*y > R*R)
      return x*y;
  if(x*x+y*y <= R*R && fabs(x)+fabs(y)>=R && ((x<=0 && y>=0)  || (x>=0 && y<=0))) 
      return x+y;
  if(y==0)
      return 0;
  return x/y;    
  }
int main() {
  std::cout << "Enter x, y, R:\n";
  double x = 0.0, y = 0.0, R = 0.0;
  std::cin >> x >> y >> R;
  std::cout << SPO(x, y, R) << std::endl;
}
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
29.09.2012, 10:03     Попадание точки в закрашенную область #11
Через уравнения прямых:
C++
1
2
3
4
5
6
7
8
9
10
11
12
double SPO (double x, double y, double R)
 {
   if (x*x + y*y <= R*R)
   {
      if(y > -x + R || y < -x - R) //красная область
         return x/y;
      else if (y > -x - R || y < x - R) // синяя область
                return x + y;
      else return x/y;    // желтая область
   }
   else return x*y;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.04.2013, 20:29     Попадание точки в закрашенную область
Еще ссылки по теме:

Попадание точки в заштрихованную область C++
C++ Попадание точки в заштрихованную область
Попадание точки в заштрихованную область C++

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

Или воспользуйтесь поиском по форуму:
RimoBlack
5 / 5 / 0
Регистрация: 20.10.2009
Сообщений: 110
24.04.2013, 20:29     Попадание точки в закрашенную область #12
Цитата Сообщение от Thinker Посмотреть сообщение
Через уравнения прямых:
C++
1
2
3
4
5
6
7
8
9
10
11
12
double SPO (double x, double y, double R)
 {
   if (x*x + y*y <= R*R)
   {
      if(y > -x + R || y < -x - R) //красная область
         return x/y;
      else if (y > -x - R || y < x - R) // синяя область
                return x + y;
      else return x/y;    // желтая область
   }
   else return x*y;
}
При координатах 0;0 желтая ну никак не получается.
Yandex
Объявления
24.04.2013, 20:29     Попадание точки в закрашенную область
Ответ Создать тему
Опции темы

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