急求程序代码,C++,C,JAVA环境均可

急求程序代码,C++,C,JAVA环境均可,第1张

校园导游系统要不要,类似的,自己改进下

/校园导游程序//[问题描述]

用无向网表示学校的校园景点平面图,图中顶点表示主要景点,

存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。要求能够回答有关景点介绍、游览路径等问题。

游客通过终端可询问:

(1)从某一景点到另一景点的最短路径。

(2)游客从公园进入,选取一条最佳路线。

(3)使游客可以不重复地浏览各景点,最后回到出口(出口就在入口旁边)。

[基本要求]

(1)将导游图看作一张带权无向图,顶点表示公园的各个景点,边表示各景点之间的道路,

边上的权值表示距离.为此图选择适当的数据结构。

(2)把各种路径都显示给游客,由游客自己选择浏览路线。

(3)画出景点分布图于屏幕上。

[实现提示]

(1)构造一个无向图G并用邻接矩阵来存储。

(2)利用迪杰斯特拉算法来计算出起点到各个顶点之间的最短路径用二维数组p[i][]来记录,

最短路径长度就用一维数组d[i]存放;i的范围:0~20。

(3)一维数组have[]是用来记录最短路径出现顶点的顺序。

(4)根据起点和终点输出最短路径和路径长度。

/

#define INFINITY 10000 /无穷大/

#define MAX_VERTEX_NUM 40

#define MAX 40

#include<stdlibh>

#include<stdioh>

#include<conioh>

#include<stringh>

typedef struct ArCell

{

int adj; //路径长度

}ArCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];

typedef struct //图中顶点表示主要景点,存放景点的编号、名称、简介等信息,

{

char name[30];

int num;

char introduction[100];//简介

}infotype;

typedef struct

{

infotype vexs[MAX_VERTEX_NUM];

AdjMatrix arcs;

int vexnum,arcnum;

}MGraph;

MGraph b;

void cmd(void);

MGraph InitGraph(void);

void Menu(void);

void Browser(MGraph G);

void ShortestPath_DIJ(MGraph G);

void Floyd(MGraph G);

void Search(MGraph G);

int LocateVex(MGraph G,char v);

MGraph CreatUDN(MGraph G);

void print(MGraph G);

//

void main(void)

{

system("color 1f");

system("mode con: cols=140 lines=130");

cmd();

}

//

void cmd(void)

{

int i;

b=InitGraph();

Menu();

scanf("%d",&i);

while(i!=5)

{

switch(i)

{

case 1:system("cls");Browser(&b);Menu();break;

case 2:system("cls");ShortestPath_DIJ(&b);Menu();break;

case 3:system("cls");Floyd(&b);Menu();break;

case 4:system("cls");Search(&b);Menu();break;

case 5:exit(1);break;

default:break;

}

scanf("%d",&i);

}

}

MGraph InitGraph(void)

{

MGraph G;

int i,j;

Gvexnum=10;

Garcnum=14;

for(i=0;i<Gvexnum;i++)

Gvexs[i]num=i;

strcpy(Gvexs[0]name,"综合食堂");

strcpy(Gvexs[0]introduction,"新建标准化食堂");

strcpy(Gvexs[1]name,"东西办公楼");

strcpy(Gvexs[1]introduction,"全体教师办公场所,楼高12层,各种设施齐全");

strcpy(Gvexs[2]name,"5号学生宿舍楼");

strcpy(Gvexs[2]introduction,"计算机系男生宿舍楼,苏式建筑");

strcpy(Gvexs[3]name,"医院");

strcpy(Gvexs[3]introduction,"校医院,设施不是很齐全,只能看小病,收费较贵");

strcpy(Gvexs[4]name,"图书馆");

strcpy(Gvexs[4]introduction,"藏书60万册,设施良好,2楼为电子阅览室,环境幽雅");

strcpy(Gvexs[5]name,"足球场");

strcpy(Gvexs[5]introduction,"现代化塑胶跑道,人造草坪,适宜锻炼身体的场所");

strcpy(Gvexs[6]name,"沁园");

strcpy(Gvexs[6]introduction,"绿树成荫,适宜休息和读书");

strcpy(Gvexs[7]name,"主教学楼");

strcpy(Gvexs[7]introduction,"学院最大的教学楼,共5层,环形建筑,适宜学习");

strcpy(Gvexs[8]name,"西教学楼");

strcpy(Gvexs[8]introduction,"学院第二大教学楼,环境较差");

strcpy(Gvexs[9]name,"多媒体楼");

strcpy(Gvexs[9]introduction,"多媒体教学场所,设施先进,环境良好");

for(i=0;i<Gvexnum;i++)

for(j=0;j<Gvexnum;j++)

Garcs[i][j]adj=INFINITY;

Garcs[0][1]adj=100;

Garcs[0][2]adj=200;

Garcs[0][6]adj=400;

Garcs[1][7]adj=300;

Garcs[2][3]adj=120;

Garcs[3][6]adj=220;

Garcs[3][4]adj=100;

Garcs[4][5]adj=300;

Garcs[4][9]adj=250;

Garcs[5][9]adj=350;

Garcs[6][7]adj=60;

Garcs[6][9]adj=200;

Garcs[7][8]adj=50;

Garcs[8][9]adj=20;

for(i=0;i<Gvexnum;i++)

for(j=0;j<Gvexnum;j++)

Garcs[j][i]adj=Garcs[i][j]adj;

return G;

}//InitGraph end

void Menu()

{

printf("\n 石家庄铁道学院导游图\n");

printf(" ┏━━━━━━━━━━━━━━━━━━━━┓\n");

printf(" ┃ 1浏览校园全景 ┃\n");

printf(" ┃ 2查看所有游览路线 ┃\n");

printf(" ┃ 3选择出发点和目的地 ┃\n");

printf(" ┃ 4查看景点信息 ┃\n");

printf(" ┃ 5退出系统 ┃\n");

printf(" ┗━━━━━━━━━━━━━━━━━━━━┛\n");

printf("Option-:");

}

void Browser(MGraph G)

{

int v;

printf("┏━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");

printf("┃编号┃景点名称 ┃简介 ┃\n");

for(v=0;v<G->vexnum;v++)

printf("┃%-4d┃%-16s┃%-56s┃\n",G->vexs[v]num,G->vexs[v]name,G->vexs[v]introduction);

printf("┗━━┻━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");

}

// 迪杰斯特拉算法来计算出起点到各个顶点之间的最短路径,v0为起点

void ShortestPath_DIJ(MGraph G)

{

int v,w,i,min,t=0,x,flag=1,v0;

int final[20], D[20], p[20][20];

while(flag)

{

printf("请输入一个起始景点编号:");

scanf("%d",&v0);

if(v0<0||v0>G->vexnum)

{

printf("景点编号不存在!请重新输入景点编号:");

scanf("%d",&v0);

}

if(v0>=0&&v0<G->vexnum)

flag=0;

}

for(v=0;v<G->vexnum;v++)

{

final[v]=0;

D[v]=G->arcs[v0][v]adj;

for(w=0;w<G->vexnum;w++)

p[v][w]=0;

if(D[v]<INFINITY)

{

p[v][v0]=1;p[v][v]=1;

}

}

D[v0]=0;final[v0]=1;

for(i=1;i<G->vexnum;i++)

{

min=INFINITY;

for(w=0;w<G->vexnum;w++)

if(!final[w])

if(D[w]<min){v=w;min=D[w];}

final[v]=1;

for(w=0;w<G->vexnum;w++)

if(!final[w]&&(min+G->arcs[v][w]adj<D[w]))

{

D[w]=min+G->arcs[v][w]adj;

for(x=0;x<G->vexnum;x++)

p[w][x]=p[v][x];

p[w][w]=1;

}

}

for(v=0;v<G->vexnum;v++)

{

if(v0!=v) printf("%s",G->vexs[v0]name);

for(w=0;w<G->vexnum;w++)

{

if(p[v][w]&&w!=v0) printf("-->%s",G->vexs[w]name);

t++;

}

if(t>G->vexnum-1&&v0!=v)printf(" 总路线长%dm\n\n",D[v]);

}

}//ShortestPath_DIJ end

void Floyd(MGraph G)

{

int v,u,i,w,k,j,flag=1,p[10][10][10],D[10][10];

for(v=0;v<G->vexnum;v++)

for(w=0;w<G->vexnum;w++)

{

D[v][w]=G->arcs[v][w]adj;

for(u=0;u<G->vexnum;u++)

p[v][w][u]=0;

if(D[v][w]<INFINITY)

{

p[v][w][v]=1;p[v][w][w]=1;

}

}

for(u=0;u<G->vexnum;u++)

for(v=0;v<G->vexnum;v++)

for(w=0;w<G->vexnum;w++)

if(D[v][u]+D[u][w]<D[v][w])

{

D[v][w]=D[v][u]+D[u][w];

for(i=0;i<G->vexnum;i++)

p[v][w][i]=p[v][u][i]||p[u][w][i];

}

while(flag)

{

printf("请输入出发点和目的地的编号:");

scanf("%d%d",&k,&j);

if(k<0||k>G->vexnum||j<0||j>G->vexnum)

{

printf("景点编号不存在!请重新输入出发点和目的地的编号:");

scanf("%d%d",&k,&j);

}

if(k>=0&&k<G->vexnum&&j>=0&&j<G->vexnum)

flag=0;

}

printf("%s",G->vexs[k]name);

for(u=0;u<G->vexnum;u++)

if(p[k][j][u]&&k!=u&&j!=u)

printf("-->%s",G->vexs[u]name);

printf("-->%s",G->vexs[j]name);

printf(" 总路线长%dm\n",D[k][j]);

}//Floyd end

void Search(MGraph G)

{

int k,flag=1;

while(flag)

{

printf("请输入要查询的景点编号:");

scanf("%d",&k);

if(k<0||k>G->vexnum)

{

printf("景点编号不存在!请重新输入景点编号:");

scanf("%d",&k);

}

if(k>=0&&k<G->vexnum)

flag=0;

}

printf("┏━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");

printf("┃编号┃景点名称 ┃简介 ┃\n");

printf("┃%-4d┃%-16s┃%-56s┃\n",G->vexs[k]num,G->vexs[k]name,G->vexs[k]introduction);

printf("┗━━┻━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");

}//Search end

int LocateVex(MGraph G,char v)

{

int c=-1,i;

for(i=0;i<G->vexnum;i++)

if(strcmp(v,G->vexs[i]name)==0)

{c=i;break;}

return c;

}

MGraph CreatUDN(MGraph G)//初始化图形,接受用户输入

{

int i,j,k,w;

char v1[20],v2[20];

printf("请输入图的顶点数,弧数:");

scanf("%d%d",&G->vexnum,&G->arcnum);

printf("请输入景点的编号:、名称、简介:\n");

for(i=0;i<G->vexnum;i++)

{

printf("景点编号:");

scanf("%d",&G->vexs->num);

printf("景点名称:");

scanf("%s",G->vexs[i]name);

printf("景点简介:");

scanf("%s",G->vexs->introduction);

}

for(i=0;i<G->vexnum;i++)

for(j=0;j<G->vexnum;j++)

G->arcs[i][j]adj=INFINITY;

printf("请输入路径长度:\n");

for(k=0;k<G->arcnum;k++)

{

printf("第%d条边:\n",k+1);

printf("景点对(x,y):");

scanf("%s",v1);

scanf("%s",v2);

printf("路径长度:");

scanf("%d",&w);

i=LocateVex(G,v1);

j=LocateVex(G,v2);

if(i>=0&&j>=0)

{

G->arcs[i][j]adj=w;

G->arcs[j][i]=G->arcs[i][j];

}

}

return G;

}

void print(MGraph G)

{

int v,w,t=0;

for(v=0;v<G->vexnum;v++)

for(w=0;w<G->vexnum;w++)

{ if(G->arcs[v][w]adj==INFINITY)

printf("∞ ");

else printf("%-7d",G->arcs[v][w]adj);

t++;

if(t%G->vexnum==0)

printf("\n");

}

}

校园导游系统的建议:1计算机毕业设计可不能马虎,最好还是自己动动脑筋,好好的写一写。 2网上那种免费的毕业设计千万不能采用,要么是论文不完整,要么是程序运行不了,最重要的是到处都是,老师随时都可以知道你是在网上随便下载的一套3如果没有时间写,可以在网上找找付费的,我们毕业的时候也是为这个头疼了很长时间,最后在网上找了很久,终于购买了一套毕业设计,还算不错,开题报告+论文+程序+答辩演示都有,主要的都是他们技术做好的成品,保证论文的完整和程序的独立运行,可以先看了作品满意以后再付款,而且同一学校不重复,不存在欺骗的性质,那个网站的名字我记的不是太清楚了,你可以在百度或者GOOGLE上搜索------七七论文网,希望您可以找到

备考笔试

导游考试的笔试有四个方面:全国导游基础知识、当地导游基础知识、政策法规、导游业务。我觉得不同的课目应该以不同的心态在不同的时间来准备。

1、对于《全国导游基础知识》和《当地导游基础知识》,你不妨从现在开始,就把这两本书找来当百科全书来看,因为其中有历史、地理、建筑等知识,看起来还是比效有意思的,每天看一点记一点,日积月累到考试时,你应该记住了不少的东西。而且我觉得这一部分的内容,不仅考试能用,就算你考试没有考过,你平常与朋友侃天侃地也大有用处,显得多么博学啊!题型一般为选择题、判断题(各省题型不同)。如果你已经有了一定的基础,那么这根本不是问题,考试的内容都是很肤浅的东西,一般人即使不参加培训至少也能答出40%左右,即使你没有基础,只要肯用心背也是没有问题的。技巧方面我认为问答式比较好,找一个你的同学,两个人互相考,记得很快。这些东西即使不是为了应付考试,你记住了也会受益匪浅。如果你真的喜欢导游这个行业的话,这一科不会有问题的!另外,在考试时这两本书是在一张试卷上。

2、《导游业务》可能也是许多初学者比较头疼的,对于这一部分,我建议使用理论与实践相结合的办法,你可以先把书上大概的内容了解一遍,知道其中有哪些部分,然后,为自己寻找一、两次机会跟团(最好是某位老导游),在跟团的过程,多看、多学、多问,把书中一些关键的问题搞清楚,头脑中对做全陪、地接、与游客如何相处、导游服务规范与程序等有个认识,回来之后,再看书,我相信应该会事半而功倍的。

3、《政策与法规与职业道德》政策法规主要考题一般为单项选择、多项选择,简答和案例分析几大类。部分省会有一些辨析题,填空题,而且每个省每年都有一些变动,在选择题拿下大部分分数,后面就轻松了。案例分析需要一定的综合分析和总结能力,要看清题目,符合哪条法律法规。对于这一科我认为不是很难,主要是记忆为主,换句话说只要你能把重点背下来,就没有问题。不过如何记忆也是学问。说实话还真没有捷径,不过我到是有三个小窍门:

一、是把看这两本书的时间放在离考试最近的时候,就算记不全起码也有个印象,猜或蒙不至于太离谱;

二、多看书,多做练习。导游考试的一个最重要的捷径就是在边看书的时候,一定要多加强练习,一是巩固书上的知识,二是弥补自己没有看到的知识点,可以在网上找一些试题去做,找一些有针对性的试题,最好同步练习题,这样看一章做一章试题,效果会更佳,考过的朋友都知道市场上有本书叫导游考试一本通,这本书当初我买过,非常的好,比较适合我们考试用,而且考试的时候也能考到不少的题。不过价格比较贵。但我觉得物有所值。有付出才有收获。

三、是如果你参加培训班的话,不妨关注老师最后讲的重点,押宝嘛!

4、有能力、有谋略、有远见的考生不妨找全近几年的试卷仔细分析。千万不要认为即已考过就不会再重复出题,但是试卷本身往往是万变不离其中,考过的问题很可能在别的题型中再次出现。希望能引起考生们充分的认识。

5、建议教材最少要看三遍。第1遍是自己把书通看,对全书有一个初步的了解;第2遍是记重点;第3遍是把你认为还没有记好的好好输理一下。

备考口试

口试一般有两到三位主考官,满分一百分,其中礼仪礼貌10分,景点讲解30分,回答问题60分,礼仪礼貌的十分是白给你的,只要你会笑,进屋敲门,无论你长得多难堪,这十分都是你的囊中之物。

景点讲解的要求并不高,只要把导游词背下来就可以了,不需要生动,只要自然就好,我这里说的是及格的标准,如果你能“讲”出来就更好了!讲解时间一般在十分钟左右,当然,如果你前面很流利很生动的话,也许3分钟主考官就让你停了,因为老师每天都在听同样的景点,同样的导游词,所以不会有心情详细听的!当然也有例外,我考试的时候老师足足让我讲了半个小时!我心里还纳闷呢,怎么还不让我停啊!导游词千万不能有错误,考官即使不认真听你也不会蒙混过去,而且不能漏景点,要有条理,在考试之前你最好去过景点,否则比较难。

这里心理素质尤为重要,其实你只要不会说不出话,一般都可以拿到三十分中的15-20分,回答问题就靠你的准备了,会的问题不必说,不会的问题分两种,一种是有一点印象,但是回答不出来,这种情况你可以顾左右而言他,稍微说几句话,打一打擦边球,然后说:“我知道的只有这么多了。”几十老师不能给你分,不过也许他会欣赏你的应变能力。而对于根本不知道老师再说什么的问题,你只有礼貌地说:“惭愧,老师我这道题真的不知道,我放弃了,您能把答案告诉我吗?我长长知识。”虽然没有答出来,但是却在老师面前表现出你的好学,所谓会的问题要拿满分!不会的问题也要拿几分!

大家在备考现现场口试时是到处寻找现成的导游词,以为这是应对现场导游考试最好的资料!我能够理解考生们的想法都比较一致,找到现成的导游词背就可以了。如果要自己写,自己找,哪有时间,哪有精力啊!其实按照我的经验,我觉得这种想法不对,自己准备虽然会花是时间和精力,但那叫着“磨刀不误砍柴功”,自己准备的东西符合自己的语言习惯,思维方式,记忆起为就会更容易一些,那将会事半而功倍!

而且我看了一些网上的导游词,很多部分也是直接从某个书面介绍中copy下来的,语言太书面化了,根本不是导游语言,念起来都费劲,更别说要记下来,再讲出来了!其实关于现场导游词的准备是有技巧的。

如何备考现场导游?

一、考试前先弄清楚,考什么,哪些是重点?

这有点像费话,是吧,不就是考十个景点的讲解吗?我认为不是的,想想,为什么要考现场,一定要见到你本人啊?考什么,在各位朋友的<现场导游汇编>的最后几页就说了,考语言表达、仪表、讲解、规范和应变,这谁都看到得,可有没有好好想过呢?每一方面如何做准备。

其实要我说得通俗一点,要考的,要看的就是你有没有做导游的资质,从语言到形象,再到有没有做导游所需的亲和力,热情劲!所以我觉得备考现场你最现要准备的就是好的状态,要先打心眼里明白,作为服务行业的导游人员,你要有朝气,要热情,要充满激情,并且用这样的心态去准备你的每一篇导游词,这一段不是费话,请记住态度决定一切!

二、客观分析十个景点的导游词组成,不要盲目畏惧!

A、突显个性,重点准备――先把导游词中能够通用的部分认真准备!

我听得最多的话就是“十篇导游词啊,每个十分钟,那哪里记得住啊”,其实真有那么多吗?分析一下:从规范的要求来说,一篇结构完整的导游词应该有五大部分,1、欢迎词2、行程介绍3、相关注意事项说明4、景区景点概况及讲解5、欢送词。那么在这些部分中,除与景点相关的第4部分是十个点各不相同的,其他部分是略作调整即可通用的,而且第1、2、5部分是比较突显个性的,是每个人不同可以充分发挥个人特色的,多花点功夫来设计、来写并且把它练习好,应该会增加你考过的概率的。这是事半而功倍的事,你好好的做一次的准备,十篇稿子都能用,比你去直接copy别人的东西更好记,也更有意义!

这部分准备得好的话应该会占去3至4分的时间。

B、多查资料,有所取舍――抓住景点讲解的关键内容!

把A部分准备好后,还有6分钟左右的时间,大概要写1500个字,这一部分就是与景点相关的。在前面我说过,我不赞成你们只看一篇导游词,然后就背这一篇,这样难度很大的,因为那些稿子严格来说并不是太好记忆的导游词。

我觉得比较合适的方法是:

1、你先多找一些资料来看,看总比背容易吧,

2、把你看过的东西分析一下,哪些部分是你印象较深的,看一遍后能说出个大概的,就把这些部分做为你景点讲解的内容,因为这些东西最好记,你别嫌它讲得太浅,导游讲解本就是深入浅出的,各种内容都有,你是入门考试,不是导游大赛。

3、把你挑出来要讲的部分,分个块,比方说黄鹤楼,先讲其地位(三大名楼、4A景区、中国旅游胜地40佳等),再讲楼名的由来(因地得名,因仙得名),再讲黄鹤楼修建的历史,把三部分串起来,你的景点讲解部分就完成了。

再举个例子,大别山,这是很多人都抱怨没有资料的,你可以,先讲其重要的地理位置,历史上的名称及由来,发生了一些什么大事,再讲其景区景物特别,为什么,什么时候被定为国家森林公园,公园概况,最后讲讲天堂寨或薄刀峰及罗田县的情况,这些都讲完了,我想时间也差不多到了,实在不行,可以就景区的景物再讲一点。这些块都是你根据自己的思维方式来分和串的,所以记忆起来,就不会那么吃力。

导游资格考试关于现场口试(面试)时要注意的几个细节:

一、尊重除考官以外的考场工作人员,他们有确定考生是否违规的权力,如被认定违规(如在考场范围内喧哗、不按指定时间和考场参考、言行不当、不按时离开考场等)将取消考试成绩和补考资格(好象今年大多数省区取消补考了)。

二、多使用礼貌用语,如“老师们好!”、“各位老师辛苦了!”、“谢谢您的指点!”、“再见!”等,虽然在考试评分细则中对此没有硬性规定,但通常会影响到考官的主观印象,从而影响其打分。

三、注意着装,虽然已是入冬,但在日常厚外套内最好配上正规礼服,入考室时可以先除去放在门外,否则形象臃肿不堪。

四、进行讲解和答问时务必注视考官,带一种自信神情,以免给考官留下紧张、背书和害怕的感觉。

五、遇到答不出的问题可以进行推测,但一定要声明是个人看法,如果实在没有把握,最好坦白承认,并当场求教考官,切忌不懂装懂。

六、考官提问时要认真倾听,然后思考两秒再作答,不要脱口而出,会让考官觉得不稳重,缺乏思维的慎密。

七、如觉得在面试时手足无措,最好准备一枝笔带入,讲解时双手握笔,以免感觉手没地方放,同时也可作为导游指示棒使用。

八、面带微笑,微笑表情可以给人以坦诚、自信、友好之感,面无表情或紧锁双眉容易让考官为你担心,从而影响得分。

九、与考官保持适当距离,以两米至四米为宜,紧邻考官会招致考官不满(与心理学规律有关,恕不详述。)

十、不要向考官打听成绩,不要强调客观原因导致发挥失常,考官通常会以发展潜力为主要衡量标准,如果苦苦哀求或多嘴多舌反而可能产生负面影响。

十一、考完后记得拿走身份z、准考证,这是将来领取成绩的依据,非常重要。而且让考官跟在你身后追着要你拿回证件肯定难堪。

十二、最重要的一点——自然。

其他

有不少朋友的认为导游非常难考,通过率只有30%左右,往往心怀忐忑,其实没有这个必要,因为虽然通过率低,但是和我们竞争的对手也很弱,只要是你真心爱导游这个行业,你有决心,你付出了,导游证一定是你的囊中之物。其实被淘汰的那些人当中只有相当少的一部分认真地复习了,其余的人不是在等待抄,就是因为工作繁忙而没时间复习,所以考导游并不难,前提是你要付出。

当然,也有不少朋友即使付出了,还是挂了,这是多方面原因造成的,我反对作弊,但是我我认为有的时候做一些物质准备来作为辅助也是必要的,你是努力了,但是你未必能有一个公平的竞争环境,在一个不公平的环境中你要尽量的公平地对待自己和别人。

如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!

10哈夫曼编\译码器我有啊

# define max 50

> struct a

> {

> int weight;

> int parent,lchild,rchild;

> };

> struct b

> {

> char cd[max];

> int start;

> };

> main()

> {

> struct a ht[2max];

> struct b hcd[max],d;

> int i,j,k,n,c,s1,s2,m1,m2,f;

> printf("shu ru n:

");

> scanf("%d",&n);

> for(i=1;i<=n;i++)

> {

> printf("shu ru quan zhi :");

> scanf("%d",&ht[i]weight);

> ht[i]parent=0;

> }

> for(;i<=2n-1;i++)

> ht[i]parent=ht[i]lchild=ht[i]rchild=0;

> for(i=n+1;i<=2n-1;i++)

> {

> m1=m2=30000;

> s1=s2=0;

> for(k=1;k<=i-1;k++)

> {

> if(ht[k]parent==0 && ht[k]weight<m1)

> {

> m2=m1;

> s2=s1;

> m1=ht[k]weight;

> s1=k;

> }

> else if(ht[k]parent==0 && ht[k]weight<m2)

> {

> m2=ht[k]weight;

> s2=k;

> }

> }

> ht[s1]parent=ht[s2]parent=i;

> ht[i]lchild=s1;

> ht[i]rchild=s2;

> ht[i]weight=ht[s1]weight+ht[s2]weight;

> }

> for(i=1;i<=n;i++)

> {

> dstart=n-1;

> c=i;

> f=ht[i]parent;

> while(f)

> {

> if(ht[f]lchild==c)dcd[--dstart]='0';

> else dcd[--dstart]='1';

> c=f;

> f=ht[f]parent;

> }

> hcd[i]=d;

> }

> printf("shu chu ha fu bian ma

");

> for(i=1;i<=n;i++)

> {

> printf("%d ",ht[i]weight);

> for(k=hcd[i]start;k<n-1;k++)

> printf("%c",hcd[i]cd[k]);

> printf("

");

> }

> }

>

>

/

校园导游咨询

[问题描述]

设计一个校园导游程序,为来访的客人提供各种信息查询服务。

[基本要求]

(1)设计你的学校的校园平面图,所含景点不少于10个。以图中顶点表示校内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。

(2)为来访客人提供图中任意景点相关信息的查询。

(3)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。

[实现提示]

一般情况下,校园的道路是双向通行的,可设校园平面图是一个无向网。顶点和边均含有相关信息。

一需求分析

1从中北大学平面图中选取10个大家熟悉的景点,抽象成一个无向带权图(如图所示)。以图中顶点表示景点,边上的权值表示两地的距离。

2本程序的目的是为用户提供路径咨询和景点查询。根据用户指定的始点和终点输出相应路径或者根据用户指定的景点输出景点的信息。

二、概要设计

1本文采用的数据结构

/

/包含头文件/

#include<stdioh>

#include<processh>

/定义符号常量/

#define INT_MAX 10000

#define n 10

/定义全局变量/

int cost[n][n];/ 边的值/

int shortest[n][n];/ 两点间的最短距离/

int path[n][n];/ 经过的景点/

/自定义函数原型说明/

void introduce();

int shortestdistance();

void floyed();

void display(int i,int j);

2个人分工

(1)景点信息查询

(2)两景点的最短距离

(3)两个景点之间的路径

三、详细设计

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][3]=cost[3][1]=2;

cost[2][3]=cost[3][2]=1;

cost[2][4]=cost[4][2]=2;

cost[3][10]=cost[10][3]=4;

cost[1][10]=cost[10][1]=4;

cost[2][10]=cost[10][2]=4;

cost[4][10]=cost[10][4]=4;

cost[1][4]=cost[4][1]=5;

cost[4][5]=cost[5][4]=3;

cost[4][9]=cost[9][4]=4;

cost[5][9]=cost[9][5]=8;

cost[5][7]=cost[7][5]=4;

cost[5][6]=cost[6][5]=2;

cost[6][7]=cost[7][6]=1;

cost[7][8]=cost[8][7]=3;

cost[8][6]=cost[6][8]=4;

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;

}

}

}/main/

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");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 学生上体育课及运动的场地,设有田径场、足球场、篮球场等。\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\n");break;

case 10:

printf("10: 国防生公寓\n\n 国防生居住地地方。\n\n");break;

default:

printf("景点编号输入错误!请输入1->10的数字编号!\n\n"); break;

}

}/introduce/

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;

}/shortestdistance/

void floyed()

{/用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]))

{/用path[][]记录从i到j的最短路径上点j的前驱景点的序号/

shortest[i][j]=shortest[i][k]+shortest[k][j];

path[i][j]=k;

path[j][i]=k;

}

}/floyed/

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)

{/ 把i到j的路径上所有经过的景点按逆序打印出来/

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)

{/ 把i到j的路径上所有经过的景点按顺序打印出来/

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");

}/display/

以上就是关于急求程序代码,C++,C,JAVA环境均可全部的内容,包括:急求程序代码,C++,C,JAVA环境均可、校园导游系统、急求高人指点:c程序校园导游,但是路径有问题,每当输入十五栋到其他就不能执行,应该是path[]路径错了急等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10107077.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存