求解答
#include<iostream>
#include<fstream>
#include<string>
#include<string.h>
#include<errno.h>
using namespace std;
class MGraph
{
public:
string vertex[26];
int vertexNum;
int eNum;
int arc[26][26];
};
class Floyd
{
public:
void fdist(MGraph G)
{
int i, j, k;
string t;
for (i = 0; i < G.vertexNum; i++)
for (j = 0; j < G.vertexNum; j++)
{
dist[i][j] = G.arc[i][j];
if (dist[i][j] != 9999)path[i][j] = G.vertex[i] + "->" + G.vertex[j];
else path[i][j] = "";
}
for (k = 0; k < G.vertexNum; k++)
for (i = 0; i < G.vertexNum; i++)
for (j = 0; j < G.vertexNum; j++)
if (dist[i][k] + dist[k][j] < dist[i][j])
{
dist[i][j] = dist[i][k] + dist[k][j];
t = path[i][k];
for (int c = t.size() - 1; t[c] != '>'; c--)
t = t.substr(0, c);
path[i][j] = t + path[k][j];
}
}
void Seek(int a, int b)
{
cout << "路线:" << path[a][b] << endl << "路程:" << dist[a][b] << "公里" << endl;
}
private:
string path[26][26];
int dist[26][26];
};
int main()
{
MGraph G;
Floyd T;
string t;
G.vertexNum = 26;
G.eNum = 30;
int i, j;
for (i = 0; i < 26; i++)
for (j = 0; j < 26; j++)
G.arc[i][j] = 9999;
fstream file1, file2;
file1.open("txt1.txt");
file2.open("txt2.txt");
int t1, t2, t3;
for (i = 0; i < 26; i++)
{
file1 >> t1 >> t;
G.vertex[t1] = t;
}
for (i = 0; i < 30; i++)
{
file2 >> t1 >> t2 >> t3;
G.arc[t1][t2] = t3;
G.arc[t2][t1] = t3;
}
file1.close();
file2.close();
T.fdist(G);
int c=0;
cout << "查询请按1,退出请按0:"; cin >> t1;
if (t1)
{
cout << "各城市对应编号:" << endl;
for (int i = 0; i < 26; i++)
cout << G.vertex[i] << ":" << i << "号" << "";
}
cout << endl;
while (c)
{
cout << "请输入查询的城市编号:" << endl;
cin >> i >> j;
T.Seek(i, j);
cout << "继续查询请按1,退出请按0。:";
cin >> c;
}
system("pause");
}
这代码有什么问题,还是实现不了功能..