Advertisement
Infiniti_Inter

66 1 (7)

May 14th, 2019
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.81 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <fstream>
  4.  
  5. using namespace std;
  6.  
  7. ifstream in("input.txt");
  8.  
  9. struct Point//структура поинт
  10. {
  11.     double x, y, z;
  12.  
  13.     void get()//меnдот, который считывает точку
  14.     {
  15.         in >> x >> y >> z;
  16.     }
  17.     void print()//метод, который печатает точку в консоль
  18.     {
  19.         cout << x << ' ' << y << ' '  << z << ' '  << endl;
  20.     }
  21.  
  22. };
  23.  
  24. double sqr(double a)//функция, возвращающая квадрат числа
  25. {
  26.     return a * a;
  27. }
  28.  
  29. double range(Point a, Point b)//функция возвращает расстояние между точками
  30. {
  31.     return sqr(a.x - b.x) + sqr(a.y - b.y) + sqr(a.z - b.z);
  32. }
  33.  
  34. const int MAXSIZE = 100;//максимальный размер массива
  35. int main()
  36. {
  37.     Point a[MAXSIZE];//массив точек
  38.     int n;//количество точек в примере
  39.     in >> n;
  40.     for (int i = 0; i < n; ++i)//считывание массива точек
  41.         a[i].get();
  42.  
  43.     int idx1 = -1, idx2 = -1;//индексы, ответа, изначально = "-1".
  44.     double minRange = 1e18;//инициализируем минимальное расстояние большой величиной.
  45.     for (int i = 0; i < n; ++i)//переберем точку один
  46.         for (int j = 0; j < n; ++j)//переберем точку два
  47.         {
  48.             if (i == j)//если точки совпадают,
  49.                 continue;//перейти к следующей
  50.             double curRange = range(a[i], a[j]);//расстояние между точкой 1 и 2
  51.             if (curRange < minRange)//если оно меньше, чем мы уже нашли
  52.             {//обновим ответ
  53.                 minRange = curRange;
  54.                 idx1 = i;
  55.                 idx2 = j;
  56.             }
  57.         }
  58.     a[idx1].print();
  59.     a[idx2].print();
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement