复制
收藏
提问
简洁

对应程序功能框图,确定各项功能要使用的主要函数,并进行明确描述,包括:函数名称、函数功能、函数参数、函数返回值类型等。 可使用程序流程图来进行算法描述。 本系统共设置10个函数,其中包括主函数。各函数名及功能说明如下: 1. 函数首部 //功能说明 2. include<bits/stdc++.h> #define max 999999 #define M 20 int dist[M][M];///距离 int path[M][M];///路径 int Stack[M];///路径栈 int top;///栈顶 int counts;///记录路径数 int visited[M];///标记数组 using namespace std; struct vertex///景点信息结构体 { int num;///景点编号 char name[20];///景点名称 char info[300];///景点介绍 }; struct maps { int n;///点数 int m;///边数 vertex v[M]; int edgs[M][M];///邻接矩阵 } g; ///景点图的结构体 void Creat_vertex() { g.v[0].num=1; strcpy(g.v[0].name,"图书馆"); strcpy(g.v[0].info,"丰富的藏书资源"); g.v[1].num=2; strcpy(g.v[1].name,"体育馆"); strcpy(g.v[1].info,"为同学们提供运动的场所"); g.v[2].num=3; strcpy(g.v[2].name,"文科楼"); strcpy(g.v[2].info,"文科专业的同学上课和学习的地方"); g.v[3].num=4; strcpy(g.v[3].name,"工科楼"); strcpy(g.v[3].info,"工科专业同学学习和上课的地方"); g.v[4].num=5; strcpy(g.v[4].name,"公教一"); strcpy(g.v[4].info,"在校同学们公用的教学楼"); g.v[5].num=6; strcpy(g.v[5].name,"理科楼"); strcpy(g.v[5].info,"理科同学上课和学习的地方"); g.v[6].num=7; strcpy(g.v[6].name,"篮球场"); strcpy(g.v[6].info,"为热爱篮球的同学们提供"); g.v[7].num=8; strcpy(g.v[7].name,"公教二"); strcpy(g.v[7].info,"第七教学楼,设备新颖"); g.v[8].num=9; strcpy(g.v[8].name,"琴湖"); strcpy(g.v[8].info,"河科大内部的一个人工湖"); g.v[9].num=10; strcpy(g.v[9].name,"国际教育学院"); strcpy(g.v[9].info,"国际教育"); g.v[10].num=11; strcpy(g.v[10].name,"十教"); strcpy(g.v[10].info,"卓越学院,国际教育学院"); g.v[11].num=12; strcpy(g.v[11].name,"数学学院"); strcpy(g.v[11].info,"经济,会计,人艺数法学院"); g.v[12].num=13; strcpy(g.v[12].name,"学生活动中心"); strcpy(g.v[12].info,"这是举办文艺活动的场所"); } void Creat_maps() { int i,j; g.n=13;///13个景点 g.m=18;///18条双向路径 for(i=0; i<g.n; i++) ///初始化邻接矩阵 { for(j=0; j<g.n; j++) { g.edgs[i][j]=max; } } g.edgs[0][1]=g.edgs[1][0]=289;///写入边的信息 g.edgs[0][2]=g.edgs[2][0]=305; g.edgs[0][7]=g.edgs[7][0]=506; g.edgs[1][3]=g.edgs[3][1]=285; g.edgs[1][4]=g.edgs[4][1]=220; g.edgs[2][7]=g.edgs[7][2]=460; g.edgs[2][10]=g.edgs[10][2]=500; g.edgs[3][4]=g.edgs[4][3]=348; g.edgs[4][5]=g.edgs[5][4]=159; g.edgs[4][6]=g.edgs[6][4]=158; g.edgs[5][6]=g.edgs[6][5]=355; g.edgs[5][8]=g.edgs[8][5]=254; g.edgs[6][8]=g.edgs[8][6]=250; g.edgs[6][12]=g.edgs[12][6]=290; g.edgs[6][7]=g.edgs[7][6]=209; g.edgs[8][9]=g.edgs[9][8]=503; g.edgs[9][11]=g.edgs[11][9]=455; g.edgs[10][11]=g.edgs[11][10]=340; } void Search_info() { int i,n; printf("河南科技大学的地点有:\n"); for(i=0; i<13; i++) { printf("%d:%s\n",g.v[i].num,g.v[i].name); } while(1) { printf("请输入你想要查询的地点编号:\n"); printf("按0退出\n\n"); scanf("%d",&n); getchar(); if(n==0) { break; } else if(n<0||n>13) { printf("输入有误,请重新输入!!!\n\n"); continue; } else { printf("%d:%s\n",g.v[n-1].num,g.v[n-1].name); printf("%s\n\n",g.v[n-1].info); } } return ; } void Floyd() ///弗洛伊德 { int i,j,k; for(i=0; i<g.n; i++) ///初始化距离与路径矩阵 { for(j=0; j<g.n; j++) { dist[i][j]=g.edgs[i][j]; if(i!=j&&dist[i][j]<max) { path[i][j]=i; } else { path[i][j]=-1;///-1代表不可达 } } } //printf("%d\n",g.n); for(k=0; k<g.n; k++) { for(i=0; i<g.n; i++) { for(j=0; j<g.n; j++) { if(dist[i][j]>(dist[i][k]+dist[k][j])) { dist[i][j]=dist[i][k]+dist[k][j];///更新 path[i][j]=k; ///path用于记录最短路径上的结点*/ } } } } return ; } void Floyd_print(int s, int e) { if(path[s][e]==-1||path[s][e]==e||path[s][e]==s)//

626bb0e9c
2个月前
全网
文档
学术
百科
知识库
时间不限
自动
回答简洁模式
深入研究一些

根据您提供的代码片段和描述,我们可以确定以下函数的功能和参数。以下是对每个函数的详细描述:

  1. Creat_vertex()

    • 功能: 创建景点信息结构体数组,初始化每个景点的编号、名称和介绍。
    • 参数: 无
    • 返回值类型: 无
  2. Creat_maps()

    • 功能: 初始化景点图的结构体,包括点数、边数、邻接矩阵等。
    • 参数: 无
    • 返回值类型: 无
  3. Search_info()

    • 功能: 允许用户查询景点的详细信息。
    • 参数: 无
    • 返回值类型: 无
    • 注意: 函数中使用了printfscanf,这通常是C语言的函数,而不是C++。在C++中,建议使用iostream库中的coutcin
  4. Floyd()

    • 功能: 使用弗洛伊德算法计算所有景点之间的最短路径。
    • 参数: 无
    • 返回值类型: 无
  5. Floyd_print(int s, int e)

    • 功能: 打印从景点s到景点e的最短路径。
    • 参数:
      • int s: 起始景点的编号。
      • int e: 目标景点的编号。
    • 返回值类型: 无
    • 注意: 函数不完整,需要完成路径打印的逻辑。
  6. 主函数 (未提供名称和代码)

    • 功能: 程序的入口点,调用上述函数以实现程序的主要功能。
    • 参数: 可能包括命令行参数或其他输入。
    • 返回值类型: 通常为int,表示程序的退出状态。

程序流程图

由于您没有提供完整的程序代码,特别是主函数和其他可能的辅助函数,我将提供一个简化的流程图,展示已知函数的调用关系:

[Start] --> Creat_vertex() --> Creat_maps() --> [Main Menu]
        |                             |
        |                             v
        +--> Search_info() <---+   +--> Floyd() <--+
                                 |   |            |
                                 |   +--> Floyd_print(s, e)*
                                 |               |
                                 [End of Program]

* 只有在用户选择打印特定路径时调用

请注意,这个流程图是基于您提供的代码片段和描述构建的。实际的程序可能包含更多的逻辑和函数。如果需要更详细的流程图或对特定函数的进一步描述,请提供完整的代码或更详细的要求。

你觉得结果怎么样?

以上内容由AI搜集生成,仅供参考

在线客服