各位大哥,代码还没写完,但是当运行3的时候,他会没有东西直接跳到主页面,是不是我的graph没有定义呢 我该怎么改。
#include<stdio.h> #include<string.h> #include<stdlib.h> #define MAXV 100 #define INF 0x3f3f3f3f//定义无穷大 int n;// 图的规模,不大于MAXV即可,MAXV可以自行修改 int t;//要输入几条路径 typedef struct Node { int dis[MAXV][MAXV]; char *s1[MAXV], *s2[MAXV]; }Mgraph;//作为图的存储结构,typedef方便如果想建立多个图的时候使用
Mgraph dis, dis2;
void Floyd(Mgraph dis)//Floyd算法 { for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { for (int k = 0; k < n; k++) { dis.dis[i][j] = dis.dis[i][j] <= dis.dis[i][k] + dis.dis[k][j] ? dis.dis[i][j] : dis.dis[i][k] + dis.dis[k][j]; } } } }
void Displaygraph(Mgraph dis)//输出当前图 { for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (dis.dis[i][j] == INF) { printf("%3s", "*"); } else { printf("%3d", dis.dis[i][j]); } } printf("\n"); } }
void menu() { while (1) { printf("\t************欢迎进入城市通信网络建设系统**********\n"); printf("\t\t\t1、输入城市数量\n"); printf("\t\t\t2、请输入网络数量\n"); printf("\t\t\t3、请输入城市之间距离和城市名称\n"); printf("\t\t\t4、输出城市平面图\n"); printf("\t\t\t5、输出最小代价图\n"); printf("\t\t\t6、退出\n"); printf(" ***************感谢使用 祝您天天开心*************\n"); int i; scanf("%d", &i); switch (i) { case 1: system("cls"); printf("\t\t\t\t请输入城市数量\n"); scanf("%d", &n); system("pause"); system("cls"); break; case 2: system("cls"); printf("\t\t\t\t请输入网络数量\n"); scanf("%d", &t); system("pause"); system("cls"); break; case 3: system("cls"); printf("\t\t\t\t请输入城市之间距离和城市名称\n"); for (int i = 0; i < t; i++) { int a, b, c; char s1[20], s2[20]; scanf("%d %d %d %s %s", &a, &b, &c, &s1, &s2); dis.dis[a-1][b-1] = c; dis.s1[a-1] = s1; dis.s2[b-1] = s2; } dis2 = dis; system("pause"); system("cls"); break; case 4: system("cls"); printf("\t\t\t\t输出城市平面图\n"); Displaygraph(dis2); Floyd(dis); system("pause"); system("cls"); break; case 5: system("cls"); printf("\t\t\t\t请输入最小代价图\n"); Displaygraph(dis); system("pause"); system("cls"); break; default: exit(0); break; } } }
int main() { menu(); return 0; } |