在C++中变量不会改变它的值[关闭]

pdsfdshx  于 2023-07-01  发布在  其他
关注(0)|答案(1)|浏览(121)

**已关闭。**此问题为not reproducible or was caused by typos。目前不接受答复。

此问题是由打印错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
3天前关闭。
Improve this question
我是C++的初学者,我正在编写一个函数,该函数应该在一组点([x1,.xn]=positions_x,[y1,.yn]=positions_y)中找到与给定点(x0,y0)最近的点。
下面是我的函数:

double nearestPoint(double x, double y)
{
    double ind_min = 0;
    double xi = 0;
    double yi = 0;
    double dist_mini = 1000000;
    int i;
    for (i = 0; i < 50000; i=i+1)
        xi = positions_x[i];
        yi = positions_y[i];
        double a = pow(x-xi,2);
        double b = pow(y-yi,2);
            if (sqrt(a+b)<=dist_mini)
                dist_mini = sqrt(a+b);
                ind_min = i;
    return ind_min;
}

但是,这总是返回完全相同的点。经过调查,似乎即使sqrt(a+b)更小,“dist_mini”变量的值也保持不变。因此,ind_min保持不变。
如果你有什么想法的话,
谢谢你

llmtgqce

llmtgqce1#

添加花括号({ & })以确保所有语句都在for和if块中执行。如果没有花括号,只有第一条语句将在块内。

for (i = 0; i < 50000; i=i+1)
{
    xi = positions_x[i];
    yi = positions_y[i];
    double a = pow(x-xi,2);
    double b = pow(y-yi,2);
    if (sqrt(a+b)<=dist_mini)
    {
        dist_mini = sqrt(a+b);
        ind_min = i;
    }
}
return ind_min;

相关问题