Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <fstream>
- using namespace std;
- ifstream in("input.txt");
- struct Point//структура поинт
- {
- double x, y, z;
- void get()//меnдот, который считывает точку
- {
- in >> x >> y >> z;
- }
- void print()//метод, который печатает точку в консоль
- {
- cout << x << ' ' << y << ' ' << z << ' ' << endl;
- }
- };
- double sqr(double a)//функция, возвращающая квадрат числа
- {
- return a * a;
- }
- double range(Point a, Point b)//функция возвращает расстояние между точками
- {
- return sqr(a.x - b.x) + sqr(a.y - b.y) + sqr(a.z - b.z);
- }
- const int MAXSIZE = 100;//максимальный размер массива
- int main()
- {
- Point a[MAXSIZE];//массив точек
- int n;//количество точек в примере
- in >> n;
- for (int i = 0; i < n; ++i)//считывание массива точек
- a[i].get();
- int idx1 = -1, idx2 = -1;//индексы, ответа, изначально = "-1".
- double minRange = 1e18;//инициализируем минимальное расстояние большой величиной.
- for (int i = 0; i < n; ++i)//переберем точку один
- for (int j = 0; j < n; ++j)//переберем точку два
- {
- if (i == j)//если точки совпадают,
- continue;//перейти к следующей
- double curRange = range(a[i], a[j]);//расстояние между точкой 1 и 2
- if (curRange < minRange)//если оно меньше, чем мы уже нашли
- {//обновим ответ
- minRange = curRange;
- idx1 = i;
- idx2 = j;
- }
- }
- a[idx1].print();
- a[idx2].print();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement