For循环不会一直运行

时间:2018-12-09 20:30:34

标签: c++

我的for循环停在第88个数字,我觉得很奇怪。我不知道为什么要这么做。它不会退出for循环,并且不会继续读取任何数字。我很困惑。

#include <iostream>
#include <math.h>
#include <vector>
#include <algorithm>
using namespace std;

double distanceCalc(double x1, double y1, double x2, double y2)
{
    return sqrt(((x2-x1) * (x2-x1)) + ((y2-y1) * (y2-y1)));
}


int main()
{
    int n;
    double x, y, min = 10000000;
    vector<double> xCoor;
    vector<double> yCoor;
    while (cin >> n && n != 0)
    {
        int numPairs = n;
        cout << numPairs << endl;
        for (int i = 0; i < numPairs; i++)
        {
            cin >> x >> y;
            cout << x << " " << y << " " << i << endl;
            xCoor.push_back(x);
            yCoor.push_back(y);

        }
        if (n == 1)
        {
            min = 1000000000;
        }
        for (int i = 0; i < n; i++)
        {
            for (int j = i + 1; j < n; j++)
            {
                double temp = distanceCalc(xCoor[i], yCoor[i], xCoor[j], yCoor[j]);
                if (temp < min)
                {
                    min = temp;
                }
            }
        }
        (min < 10000) ? printf("%.4f\n", min) : printf("INFINITY\n");
    }
    return 0;
}

我使用的输入为:https://drive.google.com/open?id=1SNZAVh2lkiih-RSQRa9nH5Oj6RD-fw5Z

1 个答案:

答案 0 :(得分:0)

我和其他人都尝试了您的代码,但无法重现该问题。

当然可能,您的C ++安装有问题,但是发生这些事情时更常见的问题是您正在运行的程序版本比您想象的要旧。你在跑步。因此,请仔细检查每次更改后您是否实际上在重新编译代码,以及您是否确实在使用您认为的源文件。例如,您可以在程序中添加额外的打印输出,然后查看是否在输出中找到它。

还要检查您是否正在使用您认为正在使用的输入文件。也许您真的在阅读输入的另一版本,并且输入的前88个数字后面有一些垃圾?