Advertisement
ksyshshot

Untitled

Oct 2nd, 2022
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.88 KB | Source Code | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7.     setlocale (LC_ALL, "Rus");
  8.     const int MAX_VERTEX_NUMBER = 20;
  9.     const int MIN_VERTEX_NUMBER = 3;
  10.     cout << "Данная программа находит длину саммой короткой стороны многоугольника с заданными координатами вершин\n";
  11.     cout << "Диапазон количества вершин многоугольника: от " << MIN_VERTEX_NUMBER << " до " << MAX_VERTEX_NUMBER << endl;
  12.     int vertexNumber;
  13.     bool isIncorrect;
  14.     do
  15.     {
  16.         isIncorrect = false;
  17.         cout << "Введите количество вершин многоугольника\n";
  18.         cin >> vertexNumber;
  19.         if ((cin.fail()) || (vertexNumber < MIN_VERTEX_NUMBER) || (vertexNumber > MAX_VERTEX_NUMBER))
  20.         {
  21.             cout << "Введены некорректные данные\n";
  22.             isIncorrect = true;
  23.             cin.clear();
  24.             while (cin.get() != '\n');
  25.         }
  26.     } while (isIncorrect);
  27.    
  28.     int* arrOfX = new int[vertexNumber];
  29.     int* arrOfY = new int[vertexNumber];
  30.    
  31.     const int MAX_COORDINATE = 100;
  32.     const int MIN_COORDINATE = -100;
  33.     int i = 0;
  34.     cout << "Далее необходимо ввести координаты вершин многоугольника\n";
  35.     cout << "Диапазон вводимых значений : от " << MIN_COORDINATE << " до " << MAX_COORDINATE << endl;
  36.     while (i < vertexNumber)
  37.     {
  38.         do
  39.         {
  40.             isIncorrect = false;
  41.             cout << "Введите X-координату " << i + 1 << " вершины многоугольника\n";
  42.             cin >> arrOfX[i];
  43.             if ((cin.fail()) || (arrOfX[i] < MIN_COORDINATE) || (arrOfX[i] > MAX_COORDINATE))
  44.             {
  45.                 cout << "Введены некорректные данные\n";
  46.                 isIncorrect = true;
  47.                 cin.clear();
  48.                 while (cin.get() != '\n');
  49.             }
  50.         } while (isIncorrect);
  51.         do
  52.         {
  53.             isIncorrect = false;
  54.             cout << "Введите Y-координату " << i + 1 << " вершины многоугольника\n";
  55.             cin >> arrOfY[i];
  56.             if ((cin.fail()) || (arrOfY[i] < MIN_COORDINATE) || (arrOfY[i] > MAX_COORDINATE))
  57.             {
  58.                 cout << "Введены некорректные данные\n";
  59.                 isIncorrect = true;
  60.                 cin.clear();
  61.                 while (cin.get() != '\n');
  62.             }
  63.         } while (isIncorrect);
  64.         if (!isIncorrect)
  65.             i++;
  66.     }
  67.     float polygonSide;
  68.     float minPolygonSide = sqrt(2 * pow(MAX_COORDINATE - MIN_COORDINATE,2));
  69.     vertexNumber--;
  70.     for (i = 0; i < vertexNumber + 1; i++)
  71.     {
  72.         if (i != vertexNumber)
  73.             polygonSide = sqrt(powf(abs(arrOfX[i + 1] - arrOfX[i]),2) + powf(abs(arrOfY[i + 1] - arrOfY[i]),2));
  74.         else
  75.             polygonSide = sqrt(powf(abs(arrOfX[0] - arrOfX[i]), 2) + powf(abs(arrOfY[0] - arrOfY[i]), 2));
  76.         if (polygonSide < minPolygonSide)
  77.             minPolygonSide = polygonSide;
  78.     }
  79.     cout << "Длина самой короткой стороны - " << minPolygonSide;
  80.     return 0;
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement