首页 > 解决方案 > 无法理解此 c++ 代码中的问题

问题描述

我有两个向量,一个称为menlocations,它存储由两个表示 xy 平面坐标的双精度值组成的对象。

第二个向量称为辐射器,它包含由三个双精度值组成的对象,其中两个是平面坐标,第三个是辐射器在 xy 平面上可以覆盖的半径。

现在的目标是确定需要毯子的男性人数,因为没有一个散热器离他们足够近,可以让他们暖和起来。

我打算做的是遍历所有男人和所有散热器,计算每个男人和每个散热器之间的距离,然后计算不靠近任何散热器的男人的数量,这样我就知道我需要带多少毯子。

我试过这段代码

double dist=0;
int blankets=0;

for(double i=0; i<menlocations.size(); i++){
    for(double j=0; j<radiators.size(); j++){
        dist = sqrt( pow((menlocations[i].x - radiators[j].x),2) + pow( (menlocations[i].y - radiators[j].y) ,2) );
        if (dist <= radiators[j].r)
            goto there;

    }
    blankets++;
    there:;
}

cout<<blankets<<endl;

而且,虽然它计算出正确的距离,但它无法正确计算毯子的数量,我似乎无法在这里解决错误。

提前致谢...

*注意:我已经省略了对象和向量的声明,因为我很肯定问题不存在在那里。

*注意:如果您有更好的策略来解决此类问题,将不胜感激。

标签: c++

解决方案


推荐阅读