Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- using namespace std;
- int main()
- {
- setlocale (LC_ALL, "Rus");
- const int MAX_VERTEX_NUMBER = 20;
- const int MIN_VERTEX_NUMBER = 3;
- cout << "Данная программа находит длину саммой короткой стороны многоугольника с заданными координатами вершин\n";
- cout << "Диапазон количества вершин многоугольника: от " << MIN_VERTEX_NUMBER << " до " << MAX_VERTEX_NUMBER << endl;
- int vertexNumber;
- bool isIncorrect;
- do
- {
- isIncorrect = false;
- cout << "Введите количество вершин многоугольника\n";
- cin >> vertexNumber;
- if ((cin.fail()) || (vertexNumber < MIN_VERTEX_NUMBER) || (vertexNumber > MAX_VERTEX_NUMBER))
- {
- cout << "Введены некорректные данные\n";
- isIncorrect = true;
- cin.clear();
- while (cin.get() != '\n');
- }
- } while (isIncorrect);
- int* arrOfX = new int[vertexNumber];
- int* arrOfY = new int[vertexNumber];
- const int MAX_COORDINATE = 100;
- const int MIN_COORDINATE = -100;
- int i = 0;
- cout << "Далее необходимо ввести координаты вершин многоугольника\n";
- cout << "Диапазон вводимых значений : от " << MIN_COORDINATE << " до " << MAX_COORDINATE << endl;
- while (i < vertexNumber)
- {
- do
- {
- isIncorrect = false;
- cout << "Введите X-координату " << i + 1 << " вершины многоугольника\n";
- cin >> arrOfX[i];
- if ((cin.fail()) || (arrOfX[i] < MIN_COORDINATE) || (arrOfX[i] > MAX_COORDINATE))
- {
- cout << "Введены некорректные данные\n";
- isIncorrect = true;
- cin.clear();
- while (cin.get() != '\n');
- }
- } while (isIncorrect);
- do
- {
- isIncorrect = false;
- cout << "Введите Y-координату " << i + 1 << " вершины многоугольника\n";
- cin >> arrOfY[i];
- if ((cin.fail()) || (arrOfY[i] < MIN_COORDINATE) || (arrOfY[i] > MAX_COORDINATE))
- {
- cout << "Введены некорректные данные\n";
- isIncorrect = true;
- cin.clear();
- while (cin.get() != '\n');
- }
- } while (isIncorrect);
- if (!isIncorrect)
- i++;
- }
- float polygonSide;
- float minPolygonSide = sqrt(2 * pow(MAX_COORDINATE - MIN_COORDINATE,2));
- vertexNumber--;
- for (i = 0; i < vertexNumber + 1; i++)
- {
- if (i != vertexNumber)
- polygonSide = sqrt(powf(abs(arrOfX[i + 1] - arrOfX[i]),2) + powf(abs(arrOfY[i + 1] - arrOfY[i]),2));
- else
- polygonSide = sqrt(powf(abs(arrOfX[0] - arrOfX[i]), 2) + powf(abs(arrOfY[0] - arrOfY[i]), 2));
- if (polygonSide < minPolygonSide)
- minPolygonSide = polygonSide;
- }
- cout << "Длина самой короткой стороны - " << minPolygonSide;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement