电梯调度--c++--软件工程
一、设计思路
(1)将乘客要去的楼层数存起来。
(2)假设yi为乘客要爬楼层数之和,yi=n1*|(n1-ni)|+n2*|(n2-ni)|+..+n18*|(n18-ni)|
(3)比较y1到y18的值,找出最小的。
(4)输出结果
二、源代码
#include "iostream.h"
#include "stdlib.h"
#define MAXSIZE 15 void Input(int &num,int flour[]) //输入乘坐电梯的人数及楼层
{
cout<<"**************电梯调度小程序***************"<<endl;
cout<<"请输入乘坐电梯的人数(限定15人):";
cin>>num;
cout<<endl;
if(num>15)
{
cout<<"输入错误!"<<endl;
exit(0);
}
cout<<"请输入每个人要去的层数(最高18层):";
for(int i=0;i<num;i++)
{
cin>>flour[i];
if(flour[i]>18)
{
cout<<"输入错误!"<<endl;
exit(0);
}
}
}
void getSmallestFlour(int num,int flour[],int &small) //计算出爬楼梯层数最少的楼层
{
int sum,temp=small;
int highest,lowest;
highest=lowest=flour[0];
for(int i=0;i<num;i++) //找出要去的楼层中最高的楼层
{
if(flour[i]>highest)
{
highest=flour[i];
}
else //找出最低楼层
{
lowest=flour[i];
}
}
for(i=lowest;i<=highest;i++) //从最低楼层开始遍历直到最高楼层
{
sum=0;
for(int j=0;j<num;j++)
{
if((flour[j]-i)<0) //计算爬楼梯的层数之和
{
sum=sum+i-flour[j];
}
else
{
sum=sum+flour[j]-i;
}
}
cout<<endl;
cout<<"当电梯停在"<<i<<"层,则乘客爬楼梯的总和为"<<sum<<endl;
cout<<endl;
if(sum<temp)
{
small=i; //记录和最小的楼层号
temp=sum; //记录最小的和
}
}
} int main(int argc, char* argv[])
{
int num,aver,flour[MAXSIZE];
Input(num,flour);
aver=0;
for(int i=0;i<num;i++)
{
aver+=flour[i];
}
getSmallestFlour(num,flour,aver);
cout<<"电梯将停在"<<aver<<"层。"<<endl;
cout<<endl;
return 0;
}
三、运行结果截图

四、心得体会
虽然我认为这个电梯算法不符合人性化,但是它最有力的解决堵塞问题。遇到问题主要是逻辑一开始有点乱。
电梯调度--c++--软件工程的更多相关文章
- 【软件工程】电梯调度的初步实现 李亚文&&郭莉莉
一.开门见山,代码粘 using System; using System.Collections.Generic; using System.Data; using System.Drawing; ...
- OO第二次博客作业——电梯调度
OO第二次博客作业——电梯调度 前言 最近三周,OO课程进入多线程学习阶段,主要通过三次电梯调度作业来学习.从单部电梯的傻瓜式调度到有性能要求的调度到多部电梯的调度,难度逐渐提升,对同学们的要求逐渐变 ...
- 电梯调度编写(oo-java编程)
第二单元的问题是写一个关于电梯调度的程序. 需要模拟一个多线程实时电梯系统,从标准输入中输入请求信息,程序进行接收和处理,模拟电梯运行,将必要的运行信息通过输出接口进行输出. 主要锻炼学生的多线程程序 ...
- OO第二单元总结(多线程的电梯调度)
经过第一单元作业的训练,在做第二单元的作业的时候,要更加的有条理.但是第二次作业多线程的运行,带来了更多的运行的不确定性.呈现出来就是程序会出现由于线程安全问题带来的不可复现的bug.本单元的作业也让 ...
- OO电梯调度
告别了三次奇妙无比的求导作业之后,我们就开始搭建一部自己的电梯了.相信我们不同同学的电梯运行方式肯定各具特色吧,但值得肯定的是,在艰苦的走完了三次电梯逐步改进的作业之后,我们的电梯在正常情况下应该是可 ...
- 电梯调度系统(界面由C图形库编绘)
1.编程题目 电梯调度系统 2.结对编程组员 黄冠译,刘畅 3.编程语言 C语言图形库 4题目要求 编写人员:刘畅,黄冠译 代码如下: # include <stdio.h> # incl ...
- PairProject 电梯调度 【附加题】
[附加题] 改进电梯调度的interface 设计, 让它更好地反映现实, 更能让学生练习算法, 更好地实现信息隐藏和信息共享. 目前的设计有什么缺点, 你会如何改进它? 1.之前判断电梯是否闲置的函 ...
- 电梯调度系统(界面由C图形库编绘)
电梯调度系统编程 1.编程题目 电梯调度. 2.结对编程组员 黄冠译,刘畅. 3.编程语言 C语言图形库. 4.题目要求: 5.代码运行及结果调试: ① 运行界面为C++图形库支持,开始运行的初始界面 ...
- oo第二次博客-三次电梯调度的总结与反思
本单元从电梯调度相关问题层层深入,带领我们学习并运用了了多线程相关的知识. 三次电梯调度依次为单电梯单容量.单电梯可携带.多电梯可携带. 一.我的设计 在第一次作业中,使用了最简单的FIFO调度方法. ...
随机推荐
- Bootstrap CSS 描述
<!DOCTYPE html><html lang="zh-CN"><head> <!--定于内容,和内容的编码格式--> < ...
- 如何解决Android的SDK与ADT不匹配问题
win7/xp 下面安装Android虚拟机,更新SDK后,在Eclipse preference里指向android-sdk-windows时.出现 :This Android SDK requir ...
- sql 基本操作
SQL基本操作 一数据类型1整数型 int2精确数值型 decimal(n,p)n为总位数,p为小数位数3浮点型 float4字符型char(n)n最大为4,varchar(n)5日期型datat ...
- 前端构建工具grunt
简单配置grunt 配置gulp还是grunt都是在node的环境下安装的,所以在这之前保证你的node环境已经安装好了! -------------------------------------- ...
- Apache 多端口多站点配置实例
分享下Apache多端口多站点的配置方法,配置apache服务器的朋友参考下. 配置httpd.conf 监听多个端口 复制代码代码如下: # Listen: Allows you to bind A ...
- Win+R快速打开你的应用程序
参考自:http://blog.csdn.net/nothing0318/article/details/7179405 1:在你的磁盘任意位置创建一个文件夹,比如C:MyShortcut,然后将你的 ...
- 关于垃圾回收(GC和Marshal)有感
最近做一个挂机软件.要求是挂个三四天没事,不会报错.开始的时候都是顺利的,所有步骤都是可以ok.但是当测试运行的是就出现问题了,内存居然会在一个Task跑完之后暴涨几M的内存.开了一台测试机测试了一天 ...
- .NET设计模式系列文章 from TerryLee
http://www.cnblogs.com/Terrylee/archive/2006/07/17/334911.html 最初写探索设计模式系列的时候,我只是想把它作为自己学习设计模式的读书笔记来 ...
- 微软TTS尝试系列之开篇杂谈(仅思路)
第一次写博客,不知道如何下手,思路也乱,就先聊聊怎么进的园子吧,但愿不会浪费大家太多的宝贵时间>_<. 与博客园结缘应该是大三刚开始的时候.当时学校教务处想开发一个教务安排系统,为了省钱就 ...
- 刀哥多线程之gcd-01-sync&async
同步 & 异步 概念 同步 必须等待当前语句执行完毕,才会执行下一条语句 异步 不用等待当前语句执行完毕,就可以执行下一条语句 NSThread 中的 同步 & 异步 - (void) ...