Нахождение минимальных и максимальных координат точек с C ++

0

У меня есть текстовый файл, который включает в себя X, Y, Z координаты точек. Моя цель - найти минимальные и максимальные точки и записать его в другой файл. Для этой цели я пишу функцию расстояния. Точки с максимальным расстоянием - это минимальные и максимальные точки. вот мой код. Он работает, но он ничего не вычисляет и не пишет.

#include <iostream>
#include<fstream>
#include <math.h>

using namespace std;

double distance (float X1, float Y1, float Z1, float X2, float Y2, float Z2)
{
    return sqrt(pow((X2-X1),2)+ pow((Y2-Y1),2)+pow((Z2-Z1),2));
}

int main ()
{ 
    float x1, y1, z1,x2, y2,z2;
    ifstream file("D:\\points.txt");
    ofstream result ("D:\\result.txt");
    double bigdistance=0;

    if (file.is_open())
    { 
        while (!file.eof())
        {
            file>>x1>>y1>>z1;
            while (!file.eof())
            {
                file>>x2>>y2>>z2;
                double d= distance (x1,y1,z1,x2,y2,z2);
                if (bigdistance<d)
                {
                    bigdistance=d;
                    result<<x1<<y1<<z1<<endl<<x2<<y2<<z2;
                }
            }
        }
    }
    else cout <<"cannot open file";

    system ("PAUSE");
    return 0;
}
Теги:
coordinates
max
minimum
points

1 ответ

0

Несколько предложений:

while (file >> x1 >> y1 >> z1 >> x2 >> y2 >> z2) {

}

прочитает ваш ввод и остановится, если какое-либо из прочтений не удалось.

Вы захотите прочитать весь ввод и сохранить его в векторе точек или аналогичном. Затем вы можете использовать два вложенных цикла для итерации по каждой паре точек. Прямо сейчас, ваши программы предполагают, что входной файл содержит все пары. То есть, каждая точка считывается несколько раз из ввода во внутреннем цикле.

Существуют также алгоритмы, которые быстрее, чем квадратичные, и вам могут понадобиться те, если у вас более пары тысяч входных точек. См. Например, qaru.site/questions/141789/....

  • 0
    Спасибо за все ваши ответы. Я действительно новичок в C ++ и другом языке программирования. Sjlver, вы правы, нужны более быстрые алгоритмы, потому что мой txt файл содержит почти 3 тысячи пунктов. Каждая строка содержит значения координат точек X, Y, Z. Я хочу рассчитать расстояние между всеми точками. Подобно Point1-> point2, point 1-> point3 ..... point1 -> pointn; point2-> point3, point2-> point4 .... pointn; И используя это расстояние, я хочу найти точку с минимальными координатами и точку с максимальными координатами.
  • 0
    Здесь есть пример строки моего текстового файла. -18,810526 -6,0689259 -2,4343202

Ещё вопросы

Сообщество Overcoder
Наверх
Меню