📄 校园导航系统.cpp
字号:
// 校园导航系统.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include<stdio.h>
#include<process.h>
#define INT_MAX 10000
#define n 10
int cost[n][n];
int shortest[n][n];
int path[n][n];
void display(int i,int j)
{ int a,b;
a=i;
b=j;
printf("您要查询的两景点间最短路径是:\n\n");
if(shortest[i][j]!=INT_MAX)
{ if(i<j)
{ printf("%d",b);
while(path[i][j]!=0)
{ printf("<-%d",path[i][j]);
if(i<j) j=path[i][j];
else i=path[j][i];}
printf("<-%d",a);
printf("\n\n");
printf("(%d->%d)最短距离是:%d米\n\n",a,b,shortest[a][b]);}
else
{ printf("%d",a);
while(path[i][j]!=0)
{ printf("->%d",path[i][j]);
if(i<j) j=path[i][j];
else i=path[j][i]; }
printf("->%d",b);
printf("\n\n");
printf("(%d->%d)最短距离是:%5d米\n\n",a,b,shortest[a][b]);}
}
else printf("输入错误!不存在此路!\n\n");
printf("\n");
}
void floyed()
{ int i,j,k;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{ shortest[i][j]=cost[i][j];
path[i][j]=0; }
for(k=1;k<=n;k++)
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(shortest[i][j]>(shortest[i][k]+shortest[k][j]))
{ shortest[i][j]=shortest[i][k]+shortest[k][j];
path[i][j]=k;
path[j][i]=k;}
}
int shortestdistance()
{ int i,j;
printf("请输入要查询的两个景点的编号(1->10的数字编号并用','间隔):");
scanf("%d,%d",&i,&j);
if(i>n||i<=0||j>n||j<0)
{ printf("输入信息错误!\n\n");
printf(" 请输入要查询的两个景点的编号(1->10的数字编号并用','间隔):\n");
scanf("%d,%d",&i,&j);}
else
{ floyed();
display(i,j);}
return 1;
}
void introduce()
{ int a;
printf("您想查询哪个景点的详细信息?请输入景点编号:");
scanf("%d",&a);
getchar();
printf("\n");
switch(a)
{ case 1: printf("1:月泉广场\n\n 学校的正门,高大宽敞,气势宏伟。\n\n");break;
case 2: printf("2:行政楼,外文馆\n\n 学校行政办公的主楼,外国语学院,视听说教室。\n\n");break;
case 3: printf("3:建艺馆\n\n 建筑成规、艺术学院,配有画室,设计独特。n\n");break;
case 4: printf("4:图书馆,报告厅\n\n 学校信息资源中心,内设大量的自习室,和报告厅相连。\n\n");break;
case 5: printf("5:博文楼\n\n 学校主教学楼,以多媒体教室为主,大教室较多。\n\n");break;
case 6: printf("6:科学楼\n\n 实验楼和计算中心。\n\n");break;
case 7: printf("7:映雪湖\n\n 湖面平静开阔,湖边有垂柳环绕,景色优美,可供休息。\n\n");break;
case 8: printf("8:食堂,超市\n\n 为学生提供日常生活所需,品种齐全。\n\n");break;
case 9: printf("9:宿舍区n\n 学生宿舍楼住区,分为松、竹、梅三区。\n\n");break;
case 10: printf("10:体育场\n\n 学生上体育课及运动的场地,设有体育馆、田径场、足球场、篮球场、网球场等。\n\n");break;
default: printf("景点编号输入错误!请输入1->10的数字编号!\n\n"); break;
}
}
void main()
{ int i,j;
char k;
for(i=0;i<=n;i++)
for(j=0;j<=n;j++)
cost[i][j]=INT_MAX;
cost[1][2]=cost[2][1]=20;
cost[1][3]=cost[3][1]=15;
cost[1][4]=cost[4][1]=150;
cost[2][4]=cost[4][2]=180;
cost[2][5]=cost[5][2]=25;
cost[5][6]=cost[6][5]=280;
cost[6][7]=cost[7][6]=100;
cost[6][8]=cost[8][6]=120;
cost[7][8]=cost[8][7]=80;
cost[8][9]=cost[9][8]=50;
cost[9][10]=cost[10][9]=60;
cost[4][7]=cost[7][4]=800;
cost[1][1]=cost[2][2]=cost[3][3]=cost[4][4]=cost[5][5]=0;
cost[6][6]=cost[7][7]=cost[8][8]=cost[9][9]=cost[10][10]=0;
//==========================================================
while(1)
{
printf("----------------欢迎使用山东建筑大学导游系统!----------------\n");
printf("1.景点信息查询………请按 i (introduc)键\n");
printf("2.景点最短路径查询…请按 s (shortestdistance)键\n");
printf("3.退出系统……………请按 e (exit)键\n");
printf("学校景点列表:\n");
printf("1:月泉广场,学校正门 ");
printf("2:行政楼,外文馆 ");
printf("3:建艺馆 ");
printf("4:图书馆,报告厅 ");
printf("5:博文楼\n");
printf("6:科学楼 ");
printf("7:映雪湖 ");
printf("8:食堂,超市 ");
printf("9:宿舍区 ");
printf("10:体育场\n");
printf("请选择服务:");
scanf("\n%c",&k);
switch(k)
{ case 'i':
printf("进入景点信息查询:");
introduce();
break;
case 's':
printf("进入最短路径查询:");
shortestdistance();
break;
case 'e':
exit(0);
default:
printf("输入信息错误!\n请输入字母i或s或e.\n");
break; }
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -