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

Определить, в какую из имеющихся на плоскости областей попадает точка с заданными координатами - C++

Восстановить пароль Регистрация
 
leli4k@
0 / 0 / 0
Регистрация: 22.12.2012
Сообщений: 8
22.12.2012, 16:03     Определить, в какую из имеющихся на плоскости областей попадает точка с заданными координатами #1
не все области находит

Даны несколько фигур согласно вариантам, которые разбивают плоскость на области. Координатные оси не считаются. Вводятся координаты точки (x,y). Необходимо разработать программу, которая определяет, в какую из имеющихся на плоскости областей попадает точка с заданными координатами. Программа должна выводить сообщение о номере области.
Требования:
Интерфейс ввода координат и отображения результатов должен быть реализован в главной функции Main(). Проверка условий должна быть реализована отдельной функцией, назовем её CheckArea(). Функция CheckArea() вызывается из Main() и возвращает номер области, в которую попала точка, не выводя никаких сообщений. Функция Main() вводит координаты точки и выводит сообщение о результате. Для проверки попадания в определенную фигуру, разработать отдельные функции, которые должны вызываться из CheckArea().
Тестирование:
В данной задаче тестовыми случаями будут координаты точек для каждой области на плоскости.
Комментарии:
Фигуры заданы координатами точек. Используя координаты необходимо вывести уравнения этих фигур. Далее, используя уравнения, составить условия, проверяющие попадание в каждую область. Затем составить алгоритм, последовательно проверяющий эти условия. В справке найти описание функций форматного ввода-вывода. Используйте, например scanf() или cin>> для ввода и printf() или cout<< для вывода.
Оформление:
1. Текст задания
2. Рисунок фигур на плоскости с указанием номеров областей
3. Уравнения фигур (с выводом, где надо)
4. Перечень условий проверок попаданий по всем областям
5. Тест-план (x ; y ; номер области)
6. Блок-схемы и описание алгоритмов
7. Листинг программы с комментариями


задание :
3. Дан квадрат с вершинами в точках: (0,0), (8,0), (8,8), (0,8). В центре квадрата – точка (4,4) – находится окружность радиусом r=3. Из центра окружности исходят две прямые линии к вершинам квадрата (0,8) и (8,8) соответственно
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include <iostream>
#include <locale.h>
 
using namespace std;
 
/*
    Функция проверяет, находится ли точка с координатами (x,y)
    внутри окружности (true) или снаружи окружности (false)
*/
bool InCircle (double x, double y)
{
  return (((x - 4.0)*(x - 4.0) + 
           (y - 4.0)*(y - 4.0)) <= 3.0) ? true : false;
 
}
 
/*
    Функция проверяет, находится ли точка с координатами (x,y)
    внутри квадрата(true) или снаружи квадрата (false)
*/
bool InSquare (double x, double y)
{
  return (y <= 8.0 && y >= 0 && 
          x >= 0 && x <= 8.0) ? true : false;
 
}
 
/*
    Функция проверяет, находится ли точка с координатами (x,y)
    внутри трапеции (true) или снаружи трапеции (false)
*/
bool InTriagle (double x, double y)
{
  return (y <= 8.0 && (x-y)<=4.0 &&
      x>=4.0 && (y-x)<=4.0) ? true : false;
 
}
 
/*
    Функция проверяет, какой области принадлежит точка 
    с координатами (x,y) и возвращает номер области от 1 до 5
*/
int CheckArea(double x, double y)
{
  bool bCircle = InCircle(x,y);
  bool bSquare = InSquare (x,y);
  bool bTriagle = InTriagle (x,y);
 
  if(bCircle == true && bSquare == true && 
     bTriagle == true) return 1;
 
  else if(bCircle == true && bSquare == true && 
          bTriagle == false) return 2;
 
  else if(bCircle == false && bSquare == true && 
          bTriagle == false) return 3;
 
  else if(bCircle == false && bSquare == true && 
          bTriagle == true) return 4;
 
  else if(bCircle == false && bSquare == false && 
          bTriagle == false) return 5;
 
}
 
/*
    Главная функция. Реализует интерфейс с пользователем.
*/
void main(void)
{
  char ch;
  double x,y;
 
  do 
  {
    cout << "\nEntry X: ";
    cin >> x;
    
    if(cin.fail())
    {  
       cin.clear();
       cout << "Incorrect X-value";
    }
    else
    {  cout << "\nEntry Y: ";
       cin >> y;
 
       if(cin.fail())
       {
          cin.clear();
          cout << "Incorrect Y-value";
       }
       else
       {
          cout << "\nPoint is placed in area: " << CheckArea(x,y);
       }
    }
    cin.sync();
    cout << "\nDo you want to entry a new point [Y/N]?";
    cin.get(ch);
  }
  while((ch == 'Y') || (ch == 'y'));
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2012, 16:03     Определить, в какую из имеющихся на плоскости областей попадает точка с заданными координатами
Посмотрите здесь:

Определить, попадает ли точка с заданными координатами (x, y) в заштрихованную область C++
C++ Определить, попадает ли точка с заданными координатами в область, закрашенную на рисунке серым цветом
C++ Определить, попадает ли точка с заданными координатами в область, закрашенную из рисунке серым цветом
C++ Определить, попадает ли точка с заданными координатами в 4 четверть
Определить, попадает ли точка с координатами в закрашенные области с заданными параметрами C++
C++ Определить, попадает ли точка с заданными координатами в область, закрашенную на рисунке серым цветом
Определить попадает ли точка с заданными координатами в закрашенную область рисунка C++
Определить, попадает ли точка с заданными координатами в область, закрашенную на рисунке C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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