Advertisement
MadCortez

Untitled

Oct 10th, 2020
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.03 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. void Start();
  4. void Print(bool flag);
  5. int InputValue(int min, int max);
  6. int* UserInputArray(int n);
  7. bool CheckPolygon(int* a, int n);
  8. int UserInput();
  9.  
  10. void Start() {
  11.     int n = UserInput();
  12.     int *a = UserInputArray(n);
  13.     Print(CheckPolygon(a, n));
  14. }
  15.  
  16. void Print(bool flag) {
  17.     if (flag)
  18.         std::cout << "Введённый многоугольник выпуклый";
  19.     else
  20.         std::cout << "Введённый многоугольник не выпуклый";
  21. }
  22.  
  23. int InputValue(int min, int max) {
  24.     int currentValue;
  25.     std::cin >> currentValue;
  26.     return currentValue;
  27. }
  28.  
  29. int* UserInputArray(int n) {
  30.     const int MIN_VALUE = -500;
  31.     const int MAX_VALUE = 500;
  32.     int* a = new int[2];
  33.     std::cout << "Введите координаты вершин в порядке обхода в диапазоне " << MIN_VALUE << ".." << MAX_VALUE << ": ";
  34.     for (int i = 0; i < n; i++) {
  35.         std::cout << "Введите координаты " << i + 1 << "-й вершины: ";
  36.         a[0, i] = InputValue(MIN_VALUE, MAX_VALUE);
  37.         a[1, i] = InputValue(MIN_VALUE, MAX_VALUE);
  38.     }
  39.     return a;
  40. }
  41.  
  42. bool CheckPolygon(int* a, int n) {
  43.     int i = 0;
  44.     bool flag = true;
  45.     do {
  46.         i++;
  47.         int j = (i + 1) % n;
  48.         int k = (i + 2) % n;
  49.         int ans = (a[0, j] - a[0, i]) * (a[1, k] - a[1, j]) - (a[1, j] - a[1, i]) * (a[0, k] - a[0, j]);
  50.         if (ans < 0)
  51.             flag = false;
  52.     } while (flag || i < n);    
  53.     return flag;
  54. }
  55.  
  56. int UserInput() {
  57.     int n;
  58.     const int MIN_SIZE = 3;
  59.     const int MAX_SIZE = 20;
  60.     std::cout << "Данная программа определяет, является ли данный многоугольник выпуклым";
  61.     std::cout << "Введите количество вершин в диапазоне " << MIN_SIZE << ".." << MAX_SIZE << ": ";
  62.     n = InputValue(MIN_SIZE, MAX_SIZE);
  63.     return n;
  64. }
  65.  
  66. int main()
  67. {
  68.     setlocale(LC_ALL, "Russian");
  69.     Start;
  70. }
  71.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement