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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
leli4k@
0 / 0 / 0
Регистрация: 22.12.2012
Сообщений: 8
#1

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

22.12.2012, 16:03. Просмотров 636. Ответов 0
Метки нет (Все метки)

не все области находит

Даны несколько фигур согласно вариантам, которые разбивают плоскость на области. Координатные оси не считаются. Вводятся координаты точки (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     Определить, в какую из имеющихся на плоскости областей попадает точка с заданными координатами
Посмотрите здесь:
C++ Определить, попадает ли точка с заданными координатами в 4 четверть
C++ Определить, попадает ли точка с заданными координатами в область
Определить, попадает ли точка с заданными координатами в закрашенную область C++
Определить, попадает ли точка с заданными координатами в заштрихованную область C++
Определить, попадает ли точка с заданными координатами (x, y) в заштрихованную область C++
Определить попадает ли точка с заданными координатами в закрашенную область рисунка C++
Определить, попадает ли точка с заданными координатами в область, закрашенную на рисунке C++
Определить, попадает ли точка с координатами в закрашенные области с заданными параметрами C++
C++ Определить, попадает ли точка с заданными координатами в область, закрашенную на рисунке серым цветом
C++ Определить, попадает ли точка с заданными координатами в область, закрашенную на рисунке серым цветом
C++ Определить, попадает ли точка с заданными координатами в область, закрашенную из рисунке серым цветом
Попадает ли точка с заданными координатами в полукруг C++

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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru