我有三个向量:
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;
}
这现在给我一个城市列表作为行和列表的距离输出,但我想要一个顶行与城市。
答案 0 :(得分:0)
我看到你的困惑。
首先,行永远不会被使用。这总是将城市与自身进行比较。
其次,从它的外观来看,你永远不必为任何行/ col索引添加任何内容。
return
第三,你的数学已关闭
距离是sqrt((x1-x2)^ 2 +(y1-y2)^ 2)。你有sqrt(x1 - x2)+(y1 - y2)^ 2
完成此操作后,您可以计算出输出的格式。我建议将你的答案存储在另一个矢量或其他STD元素中,并调用你创建的函数来做到这一点。