集装箱优化设计代码设计报告.docx
- 文档编号:24063226
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:25
- 大小:490.16KB
集装箱优化设计代码设计报告.docx
《集装箱优化设计代码设计报告.docx》由会员分享,可在线阅读,更多相关《集装箱优化设计代码设计报告.docx(25页珍藏版)》请在冰豆网上搜索。
集装箱优化设计代码设计报告
XXXX大学
计算机科学与工程学院
《软件工程》实验报告二
专业班级
实验地点
学生学号
指导教师
学生姓名
实验时间
实验项目
集装箱优化设计的代码设计
实验类别
操作性()验证性()设计性(√)综合性()其它()
实验目的及要求
1、了解集装箱优化设计的模型。
2、编写集装箱优化设计的代码,实现集装箱的优化。
成绩评定表
类别
评分标准
分值
得分
合计
上机表现
积极出勤、遵守纪律
主动完成实验设计任务
30分
程序代码
比较规范、基本正确
功能达到实验要求
30分
实验报告
及时递交、填写规范
内容完整、体现收获
40分
说明:
评阅教师:
日期:
2012年月日
实验内容
一、设计方案
输入的货物形状是正方形、长方形、三角形中的一种,长、宽等数据以cm为单位,并且是双精度的浮点数。
长宽的最大限度是不能超过集装箱的面积。
以下是集装箱装载货物的三种模型:
对应输入的数据分别表示描述货物形状的参数,具体如图3-1所示:
图3-1货物模型图
a.三种图形货物一起放:
1、装载方案一的装载示意图,如图3-2所示:
图3-2装载方案一
由图可知,装载方案一是根据用户输入的数据,依次进行如图所示的装箱过程,即:
(1)从第一列开始,将两个直角三角形拼凑成为一个矩形沿着集装箱的底部(集装箱的宽)进行存放,如果不能继续存放三角形,则转到下一列,开始摆放长方形。
(2)类似三角形的摆放过程,沿着集装箱的宽,依次摆放长方形,如果不能继续摆放长方形,则转到下一列,开始摆放正方形。
(3)类似上面的摆放过程,沿着集装箱的宽,依次摆放正方形,如果不能继续摆放正方形,则转到下一列。
如此循环执行摆放过程,直至集装箱不能继续装载货物为止。
2、装载方案二的装载示意图,如图3-3所示:
图3-3装载方案二
由图示可知,装载方案二是在装载方案一的基础上,将三角形的摆放由装载方案一中的竖放,调整为横放。
3、装载方案三的装载示意图,如图3-4所示:
图3-4装载方案三
b.只放长方形和正方形两种形状的货物,第一种如图3-5所示:
图3-5第一种装载方案
装载方案二是在装载方案一的基础上,将长方形的摆放由装载方案一中的竖放,调整为横放。
如图3-6所示:
图3-6第二种装载方案
C.任意两种图形的摆放:
长方形和正方形两种的摆放如图3-5,3-6所示.
1.三角形和正方形的摆放方案一如图3-7所示,方案二如图3-8所示。
图3-7第一种装载方案
图3-8第二种装载方案
图3-9第三种方案
2.三角形和长方形的摆放方案如下图所示。
图3-10第一种装载方案
图3-11第二种装载方案
图3-12第三种装载方案
二、代码设计
1.装载的货物的形状为三角形、长方形和正方形
#include
#include
usingnamespacestd;
voidDoTriangle(float,float);
voidDoRectangle(float,float);
voidDoSquare(float);
floatMax(float,float);
voidCompare(float,float,float);
floata=0.03;
floatLength=40;
floatWidth=20;
intTriangle=0,Rectangle=0,Square=0;
voidmain()
{
floatx1,y1,x2,y2,x;
floatAreaSum1,AreaSum2,AreaSum3,t1,t2;
cout<<"***本程序中只考虑三角形为直角三角形的情况!
***"< cout< cout<<"*******货物形状基本信息*******"< Cout<<"集装箱的体积为: "< cout< cout<<"请输入直角三角形的底: "; cin>>x1; cout<<"请输入直角三角形的高: "; cin>>y1; cout<<"输入长方形的长: "; cin>>x2; cout<<"输入长方形的宽: "; cin>>y2; cout<<"输入正方形的边长: "; cin>>x; cout< floatAreaTri=x1*y1/2; floatAreaRec=x2*y2; floatAreaSqu=x*x; cout<<"************方案一************"< cout< while(Length>=x1+a||Length>=x2+a||Length>=x+a) { DoTriangle(x1,y1); DoRectangle(x2,y2); DoSquare(x); } cout<<"三角形的个数: "< cout<<"长方形的个数: "< cout<<"正方形的个数: "< AreaSum1=AreaTri*Triangle+AreaRec*Rectangle+AreaSqu*Square; cout< cout<<"方案一装载货物总面积为: "< cout<<"******************************"< cout< cout< cout<<"************方案二************"< cout< Length=40; Width=20; Triangle=0; Rectangle=0; Square=0;//重新初始化 t1=x1; x1=y1; y1=t1; while(Length>=x1+a||Length>=x2+a||Length>=x+a) { DoTriangle(x1,y1); DoRectangle(x2,y2); DoSquare(x); } cout<<"三角形的个数: "< cout<<"长方形的个数: "< cout<<"正方形的个数: "< AreaSum2=AreaTri*Triangle+AreaRec*Rectangle+AreaSqu*Square; cout< cout<<"方案二装载货物总面积为: "< cout< cout<<"************方案三************"< cout< Length=40; Width=20; Triangle=0,Rectangle=0,Square=0;//重新初始化 t2=x2; x2=y2; y2=t2; while(Length>=x1+a||Length>=x2+a||Length>=x+a) { DoTriangle(x1,y1); DoRectangle(x2,y2); DoSquare(x); } cout<<"三角形的个数: "< cout<<"长方形的个数: "< cout<<"正方形的个数: "< AreaSum3=AreaTri*Triangle+AreaRec*Rectangle+AreaSqu*Square; cout< cout<<"方案三装载货物总面积为: "< cout<<"******************************"< cout< cout<<"*********比较各种方案*********"< cout< Compare(AreaSum1,AreaSum2,AreaSum3); cout< } voidDoTriangle(floatx,floaty)//x,y分别表示三角形的底和高 { floatm,n; m=x+a; n=y+a; if((Length>=m)&&(Width>=n)) { while(n<=Width) { Triangle+=2; n+=y+a; } Length=Length-x-a; } } voidDoRectangle(floatx,floaty)//x,y分别表示长方形的长和宽 { floatm=x+a; floatn=y+a; if((Length>=m)&&(Width>=n)) { while(n<=Width) { Rectangle++; n+=y+a; } Length=Length-x-a; } } voidDoSquare(floatx)//x表示正方形的边长 { floatm=x+a; if(Length>=m) { while(m<=Width) { Square++; m+=(x+a); } Length=Length-x-a; } } voidCompare(floatm,floatn,floato) { floatt,Option; t=Max(m,n); Option=Max(t,o); if(Option==m) cout<<"最佳装载方案为: 方案一"< else { if(Option==n) cout<<"最佳装载方案为: 方案二"< else cout<<"最佳装载方案为: 方案三"< } } floatMax(floatx,floaty) { returnx>y? x: y; } 2.装载的货物形状为长方形和正方形 #include #include usingnamespacestd; voidDoRectangle(float,float); voidDoSquare(float); floatMax(float,float); voidCompare(float,float); floata=0.03; floatLength=40; floatWidth=20; intRectangle=0,Square=0; voidmain() { Floatx2,y2,x; floatAreaSum1,AreaSum2,t1,t2; cout< cout<<"*******货物形状基本信息*******"< cout<<"集装箱的体积为: "< cout< cout<<"输入长方形的长: "; cin>>x2; cout<<"输入长方形的宽: "; cin>>y2; cout<<"输入正方形的边长: "; cin>>x; cout< floatAreaRec=x2*y2; floatAreaSqu=x*x; cout<<"************方案一************"< while(Length>=x2+a||Length>=x+a) { DoRectangle(x2,y2); DoSquare(x); } cout<<"长方形的个数: "< cout<<"正方形的个数: "< AreaSum1=AreaRec*Rectangle+AreaSqu*Square; cout< cout<<"方案一装载货物总面积为: "< cout< cout<<"************方案二************"< cout< Length=40; Width=20; Triangle=0; Rectangle=0; Square=0;//重新初始化 while(Length>=x2+a||Length>=x+a) { DoRectangle(x2,y2); DoSquare(x); } cout<<"长方形的个数: "< cout<<"正方形的个数: "< AreaSum2=AreaRec*Rectangle+AreaSqu*Square; cout< cout<<"方案二装载货物总面积为: "< cout< cout<<"*********比较各种方案*********"< cout< Compare(AreaSum1,AreaSum2); cout<<"******************************"< cout< } voidDoRectangle(floatx,floaty)//x,y分别表示长方形的长和宽 { floatm=x+a; floatn=y+a; if((Length>=m)&&(Width>=n)) { while(n<=Width) { Rectangle++; n+=y+a; } Length=Length-x-a; } } voidDoSquare(floatx)//x表示正方形的边长 { floatm=x+a; if(Length>=m) { while(m<=Width) { Square++; m+=(x+a); } Length=Length-x-a; } } voidCompare(floatm,floatn,floato) { floatt,Option; t=Max(m,n); Option=Max(t,o); if(Option==m) cout<<"最佳装载方案为: 方案一"< elseif(Option==n) cout<<"最佳装载方案为: 方案二"< } floatMax(floatx,floaty) { returnx>y? x: y; } 3.用户任意选择两种形状货物 #include #include usingnamespacestd; voidDoTriangle(float,float); voidDoRectangle(float,float); voidDoSquare(float); floatMax(float,float); voidCompare(float,float,float); floata=0.01; floatLength=40; floatWidth=20; intTriangle=0,Rectangle=0,Square=0; voidmain() { floatx1,y1,x2,y2,x; floatAreaSum1,AreaSum2,AreaSum3,t1,t2; cout<<"***本程序中只考虑三角形为直角三角形的情况! ***"< cout< cout<<"*******货物形状基本信息*******"< cout<<"集装箱的体积为: "< cout< cout<<"请输入直角三角形的底: "; cin>>x1; cout<<"请输入直角三角形的高: "; cin>>y1; cout<<"输入长方形的长: "; cin>>x2; cout<<"输入长方形的宽: "; cin>>y2; cout<<"输入正方形的边长: "; cin>>x; cout< floatAreaTri=x1*y1/2; floatAreaRec=x2*y2; floatAreaSqu=x*x; cout<<"************方案一************"< cout< while(Length>=x1+a||Length>=x2+a||Length>=x+a) { DoTriangle(x1,y1); DoRectangle(x2,y2); DoSquare(x); } if(x1==0||y2==0) Triangle=0; if(x2==0||y2==0) Rectangle=0; if(x==0) Square=0; cout<<"三角形的个数: "< cout<<"长方形的个数: "< cout<<"正方形的个数: "< AreaSum1=AreaTri*Triangle+AreaRec*Rectangle+AreaSqu*Square; cout< cout<<"方案一装载货物总面积为: "< cout<<"******************************"< cout< cout< cout<<"************方案二************"< cout< Length=40; Width=20; Triangle=0; Rectangle=0; Square=0;//重新初始化 t1=x1; x1=y1; y1=t1; while(Length>=x1+a||Length>=x2+a||Length>=x+a) { DoTriangle(x1,y1); DoRectangle(x2,y2); DoSquare(x); } if(x1==0||y2==0) Triangle=0; if(x2==0||y2==0) Rectangle=0; if(x==0) Square=0; cout<<"三角形的个数: "< cout<<"长方形的个数: "< cout<<"正方形的个数: "< AreaSum2=AreaTri*Triangle+AreaRec*Rectangle+AreaSqu*Square; cout< cout<<"方案二装载货物总面积为: "< cout< cout<<"************方案三************"< cout< Length=40; Width=20; Triangle=0,Rectangle=0,Square=0;//重新初始化 t2=x2; x2=y2; y2=t2; while(Length>=x1+a||Length>=x2+a||Length>=x+a) { DoTriangle(x1,y1); DoRectangle(x2,y2); DoSquare(x); } if(x1==0||y2==0) Triangle=0; if(x2==0||y2==0) Rectangle=0; if(x==0) Square=0; cout<<"三角形的个数: "< cout<<"长方形的个数: "< cout<<"正方形的个数: "< AreaSum3=AreaTri*Triangle+AreaRec*Rectangle+AreaSqu*Square; cout< cout<<"方案三装载货物总面积为: "< cout<<"******************************"< cout< cout<<"*********比较各种方案*********"< cout< Compare(AreaSum1,AreaSum2,AreaSum3); cout< } voidDoTriangle(floatx,floaty)//x,y分别表示三角形的底和高 { floatm,n; m=x+a; n=y+a; if((Length>=m)&&(Width>=n)) { while(n<=Width) { Triangle+=2; n+=y+a; } Length=Length-x-a; } } voidDoRectangle(floatx,floaty)//x,y分别表示长方形的长和宽 { floatm=x+a; floatn=y+a; if((Length>=m)&&(Width>=n)) { while(n<=Width) { Rectangle++; n+=y+a; } Length=Length-x-a; } } voidDoSquare(floatx)//x表示正方形的边长 { floatm=x+a; if(Length>=m) { while(m<=Width) { Square++; m+=(x+a);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 集装箱 优化 设计 代码 报告