Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Задание 23 https://pp.vk.me/c837335/v837335867/142e0/B0zd45pBjIA.jpg
- #include "stdafx.h"
- #include <iostream>
- #include <conio.h>
- #include <clocale>
- #include <math.h>
- using namespace std;
- double getDistance(double x1, double y1, double x2, double y2) // Найти расстояние между двумя точками на плоскости
- {
- return sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2));
- }
- double getPerimeter(double **myArray, int a, int b, int c)
- {
- return getDistance(myArray[a][0], myArray[a][1], myArray[b][0], myArray[b][1]) + getDistance(myArray[a][0], myArray[a][1], myArray[c][0], myArray[c][1]) + getDistance(myArray[c][0], myArray[c][1], myArray[b][0], myArray[b][1]);
- }
- void findTrio(double **myArray, int capacity) // Найти три искомые точки
- {
- double maxPerimeter = -1;
- double currentPerimeter = -1;
- int p1 = 0;
- int p2 = 0;
- int p3 = 0;
- for (int n = 0; n < capacity - 2; n++)
- for (int m = n + 1; m < capacity - 1; m++)
- for (int l = m + 1; l < capacity; l++)
- {
- currentPerimeter = getPerimeter(myArray, n, m, l);
- if (maxPerimeter < currentPerimeter)
- {
- maxPerimeter = currentPerimeter;
- p1 = n;
- p2 = m;
- p3 = l;
- }
- }
- printf_s("Искомые точки:\n%4.2f %4.2f\n%4.2f %4.2f\n%4.2f %4.2f\n", myArray[p1][0], myArray[p1][0], myArray[p2][0], myArray[p2][1], myArray[p3][0], myArray[p3][1]);
- printf_s("\nИх периметр равен: %4.2f", maxPerimeter);
- }
- int main()
- {
- int capacity; // Сколько точек
- const int dimension = 2; // Двумерное пространство (плоскость)
- setlocale(LC_CTYPE, "rus"); // Выводимый текст будет на кириллице
- printf_s("Укажите, сколько точек будет определено:\n");
- scanf_s("%d", &capacity);
- // динамическое создание двумерного массива вещественных чисел
- double **pointsArray = new double*[capacity]; // число строк в массиве
- for (int count = 0; count < capacity; count++)
- pointsArray[count] = new double[dimension]; // число пять столбцов
- printf_s("\nВведите точки в формате \"x y\" (без кавычек):\n");
- for (int i = 0; i < capacity; i++) // Заполнение массива
- for (int j = 0; j < dimension; j++)
- {
- scanf_s("%lf", &pointsArray[i][j]);
- }
- printf_s("\nВаши точки: \n");
- for (int i = 0; i < capacity; i++) // вывод массива
- {
- for (int j = 0; j < dimension; j++)
- printf_s("%4.2f ", pointsArray[i][j]);
- printf_s("\n");
- }
- printf_s("\n");
- findTrio(pointsArray, capacity);
- _getch(); // Приложение не закроется после выполнения
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement