室内布线数据结构课程设计.doc
《室内布线数据结构课程设计.doc》由会员分享,可在线阅读,更多相关《室内布线数据结构课程设计.doc(13页珍藏版)》请在沃文网上搜索。
1、数据结构课程设计报告书题目:室内布线姓名: 性别: 男 班级: 计091-2 学号:200925501213日期: 2010.7.7 课程设计内容:装修房子是一项颇为复杂的工程,现在需要写一个程序帮助房主设计室内电线的布局。 首先,墙壁上插座的位置是固定的。插座间需要有电线相连,而且要布置得整齐美观,即要求每条线都与至少一条墙边平行,且嵌入四壁或者地板(不能走屋顶)。 房主想要知道,要将所有插座连通,自己需要买的电线最短长度是多少(取整数)提示:1、每个房间都有门,电线不可以穿门而过。图中给出一个有4个插座的房间的电线布局。2、输出时应注意,题目要求取整数,但不能四舍五入,必须向上取整,因为电
2、线短一点就不能保证连通。算法设计:#include #define MAX 20#define MAXSIZE 1000using namespace std;float H_LENGH,H_WIDTH,H_HIGH;int y;/定义房子的长宽高和插座的个数为全局变量typedef structfloat X,Y,Z;Point;typedef struct /用四个点定义门的位置Point DoorPlace4;int DP;/用来标记门在房间位置float D_HIGH;Door;typedef struct /定义插座的个数和位置Point SocketPlaceMAX;int Soc
3、ketNum,SD;HOutlet;typedef struct int row,col,mark;float e;Triple;typedef structTriple dataMAXSIZE;int m,n,len;TSMatrix;int P2W(Point p)/通过插座的位置求出插座在哪一面墙上int num;if (p.X=0&p.Y=0&p.Z=0)num=1;else if (p.X=H_LENGH&p.Y=0&p.Z=0)num=2;else if (p.X=0&p.Y=H_WIDTH&p.Z=0)num=3;else if (p.X=0&p.Y=0&p.Z=0)num=4;
4、return num;float max(float a,float b)/求两个数的最大值float tem;if (ab)tem=a;else tem=b;return tem;float max(float a,float b,float c)/求三个数的最小值float tem;tem=max(a,b);tem=max(tem,c);return tem;float max(float a,float b,float c,float d)/求四个数的最大值float tem;tem=max(a,b);tem=max(tem,c);tem=max(tem,d);return tem;fl
5、oat min(float a,float b)/求两个数的最小值float tem;if (ab)tem=a;else tem=b;return tem;float min(float a,float b,float c)/求三个数的最小值float tem;tem=min(a,b);tem=min(tem,c);return tem;float min(float a,float b,float c,float d)/求四个数的最小值float tem;tem=min(a,b);tem=min(tem,c);tem=min(tem,d);return tem;float JDZ(float
6、 X,float Y)/求两个数相减的绝对值float tem;tem=X-Y;if (tem0)tem=-tem;return tem;float CalDis(Point &p1,Point &p2,Door &D)/求两个插座之间的最短距离float distance=0,distance1=0,distance2=0,distance3=0,DL,DR,SL,SR;int Num1,Num2;DL=min(D.DoorPlace0.X,D.DoorPlace1.X,D.DoorPlace2.X,D.DoorPlace3.X);DR=max(D.DoorPlace0.X,D.DoorPl
7、ace1.X,D.DoorPlace2.X,D.DoorPlace3.X);SL=min(p1.X,p2.X);SR=max(p1.X,p2.X);Num1=P2W(p1);Num2=P2W(p2);if (JDZ(Num1,Num2)=0)/此情况为两个插座在同一面墙上if(Num2!=D.DP)/插座不在有门的那面墙上distance=JDZ(p1.X,p2.X)+JDZ(p1.Y,p2.Y)+JDZ(p1.Z,p2.Z);else if (DL=0&SL=DR)/插座在门那面墙上distance=JDZ(p1.X,p2.X)+JDZ(p1.Y,p2.Y)+JDZ(p1.Z,D.D_HIG
8、H)+JDZ(p1.Z,D.D_HIGH);else if (DR=H_LENGH&SLDL)distance=JDZ(p1.X,p2.X)+JDZ(p1.Y,p2.Y)+JDZ(p1.Z,D.D_HIGH)+JDZ(p1.Z,D.D_HIGH);else if (SLDR)distance=JDZ(p1.X,p2.X)+JDZ(p1.Y,p2.Y)+JDZ(p1.Z,D.D_HIGH)+JDZ(p1.Z,D.D_HIGH);elsedistance=JDZ(p1.X,p2.X)+JDZ(p1.Y,p2.Y)+JDZ(p1.Z,p2.Z);else if(JDZ(Num1,Num2)=1)/插
9、座在相邻的两面墙上if (Num1=1)distance=H_LENGH-p1.X+p2.Y+JDZ(p1.Z,p2.Z);else if (Num1=2)distance=H_WIDTH-p1.Y+H_LENGH-p2.X+JDZ(p1.Z,p2.Z);elsedistance=H_WIDTH-p1.Y+p2.X+JDZ(p1.Z,p2.Z);else if(JDZ(Num1,Num2)=2)/插座在相对的面上if (Num1=1)distance1=p1.Z+p2.Z+H_WIDTH;distance2=p1.X+p2.X+H_WIDTH;distance3=(H_LENGH+H_WIDT
10、H)*2-distance2;distance=min(distance1,distance2,distance3);if (Num1=2)distance1=H_LENGH+p1.Z+p2.Z;distance2=H_LENGH+p1.Y+p2.Y;distance3=2*(H_LENGH+H_WIDTH)-distance2;distance=min(distance1,distance2,distance3);elsedistance=p1.X+p2.Y+JDZ(p1.Z,p2.Z);return distance;int Caledge(int n)/计算N个插座最多共有多少条线连接i
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
10 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 室内 布线 数据结构 课程设计