使用嵌套循环输出距离C ++

时间:2015-11-24 18:50:22

标签: loops vector

我有三个向量:

vector<string> city;
vector<int> x-coord;
vector<int> y-coord;

我想输出一个像这样的表:

               [city(1)]      [city(2)]      [city(3)]       [city(n)]
[city(1)]     distance(1,1)  distance(2,1)  distance(3,1)  distance(n,1)
[city(2)]     distance(1,2)  distance(2,2)  distance(3,2)  distance(n,2)
[city(3)]     distance(1,3)  distance(2,3)  distance(3,3)  distance(n,3)
[city(n)]     distance(1,n)  distance(2,n)  distance(3,n)  distance(n,n)

我可以输出一个乘法表,我想我会使用相同类型的循环。

所以,

#include <math.h>
#include <vector>
#include <string>
using namespace std;
int row, col;
for (row = 0; row < city.size(); row++) { 
for (col = 0; col < city.size(); col++) {
        int dist = sqrt(pow(x-coord.at(col+1)-x-coord.at(col),2) +
                    pow(y-coord.at(col+1) - y-coord.at(col),2));
        cout << dist; 
    }
cout << endl;
}

这不是给我想要的输出。有人可以帮我一把吗?

修复一些代码......

某些括号/括号问题需要修复,缩进很差:

#include <math.h>
#include <vector>
#include <string>
using namespace std;
int row, col;
for (row = 0; row < city.size()-1; row++) {
    cout << city.at(row);
    for (col = 0; col < city.size()-1; col++) {
        int dist = sqrt(    pow(x-coord.at(row) - x-coord.at(col), 2) + pow(y-coord.at(row) - y-coord.at(col), 2)     );
        cout << '\t' << dist;
    }
    cout << endl;
}

这现在给我一个城市列表作为行和列表的距离输出,但我想要一个顶行与城市。

1 个答案:

答案 0 :(得分:0)

我看到你的困惑。

首先,行永远不会被使用。这总是将城市与自身进行比较。

其次,从它的外观来看,你永远不必为任何行/ col索引添加任何内容。

return

第三,你的数学已关闭

距离是sqrt((x1-x2)^ 2 +(y1-y2)^ 2)。你有sqrt(x1 - x2)+(y1 - y2)^ 2

完成此操作后,您可以计算出输出的格式。我建议将你的答案存储在另一个矢量或其他STD元素中,并调用你创建的函数来做到这一点。