软件工程——电梯调度

1、题目:

石家庄铁道大学基础大楼一共有四部电梯,每层都有人上下,电梯在每层都停。信1201-1班的张一东觉得在每层都停觉得不耐烦。       由于楼层不太高,在上下课高峰期时时,电梯从一层上行,但只允许停在某一楼层。在一楼时,每个乘客选择自己的目的层,电梯则自动计算出应停的楼层。       问电梯停在那一楼层,能够保证这次乘坐电梯的所有乘客爬楼梯的层数之和最少。

2、设计思路:

刚看到题目的时候首先想到的就是最笨的方法,记录所有登电梯乘客的楼层信息,从电梯停在最低的楼层开始一直计算到最高楼层,进而比较求出其中最优解,后来听了老师讲的优化方法,感觉不太理解,就用嘴笨的方法实现的。

3、源代码:

 #include<iostream>
 #include<math.h>
 using  namespace std;
 int main()
 {
      int i,j;
      int m;
      int sum[18],summin;
      int max=2,min,n=0;
      int a[15]={0};
     cout<<"请输入乘电梯的总人数:"<<endl;
     cin>>n;
      cout<<"请分别输入每个人想要去的楼层号:"<<endl;
     for(i = 0;i < n;i++)
    {
          cin>>a[i];
          if(a[i] <= 1)
        {
              cout<<"输入错误,请重新输入!"<<"\t";
              cin>>a[i];
         }
    }
      min = a[0];
      for(i = 0;i < n;i++)
    {
          if(a[i] > max)
             {
                  max = a[i];
             }
             if(a[i] <= min)
             {
                 min = a[i];
             }
     }
      for(j = min;j <= max;j++)
     {
          sum[j] = 0;
          for(i = 0;i < n;i++)
         {
              sum[j] += abs(a[i] - j);
         }
     }
     summin = sum[min];
      m = min;
      for(j = min;j <= max;j++)
    {
          if(sum[j] < summin )
         {
              summin = sum[j];
              m = j;
         }
     }
      cout<<"电梯应停在第"<<m<<"层,此时爬楼总层数最少。"<<endl;
      return 0;
  }

4、实验截图:

5、实验总结:

用的比较笨的方法,对于算法的优化方面还没有太好的想法,还要仔细的想一想上课老师讲的优化方案。

时间: 2024-10-17 23:53:11

软件工程——电梯调度的相关文章

软件工程课堂作业(七)续——电梯调度之整体设计

一.题目要求: 1.可以获得电梯和乘客所在楼层: 2.可以根据乘客的需求到达想到达的楼层. 二.设计思路: 1.通过用户输入可以获取乘客和电梯所在楼层: 2.通过循环,输出电梯向上/向下走的过程. 三.源代码: 1 // 电梯调度——胡亚宝 2 // 3 4 #include "stdafx.h" 5 #include<iostream> 6 using namespace std; 7 8 9 int _tmain() 10 { 11 int a,b,c,m,i; 12

电梯调度--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[]) //输入乘坐电梯的人数及楼

结对编程:电梯调度

电梯调度项目: 项目分析与需求: 从题目上来看,项目要求编写一个掌控电梯的程序.电梯这个东西,大家都乘过,无非就是:乘客上电梯,判断是否超重,乘客选择想要达到的楼层,最后依次去到离需求最近的一个楼层. 项目中要求有四个电梯,其中第一号和第四号电梯是一模一样的,只需要把负载量给修改即可:第二和第三也大同小异,只需要把负载量和输入楼层的判断方式修改一下即可. 在我们的设想中,我们要达到的效果是这样的:得有一个switch语句,来控制一开始的电梯选择界面:之后在case语句之后相应搭载各种需要的语句以

结对编程-电梯调度

这次编程和前几次不同,这次是结对编程,就是一个人编码,一个人负责审查,两个人编程过程中要交换角色,不能全程一个人编程而另一个人只审查.我的结对队员是张心语.他是一个活泼开朗的大男孩,也是一个文艺小青年.可能是考研的原因,或者是其它什么原因,这次结对效果不是太理想,我多次找过他但他说有事,所以整个结对编程基本就是我一人在整,就连最后拍的结对照片也是为了满足老师的要求.虽然没有达到老师期望的结果,但我依然收获很大.从一开始看的题目的无从下手,到与人交流,再到最后编码,成长了很多,编程能力也得到了进一

结对开发--电梯调度报告

“电梯调度”需求分析 一.项目背景 试想一下,石家庄铁道大学基础教学楼的电梯配置如下:大厦有18层, 4部电梯,很多乘客使用这些电梯的日常(旅客重量:平均70公斤最大120公斤,最小45公斤).其他常量数据:电梯速度,开/关门时间,乘客的时间要在/走出电梯.可以对这些合理的假设. 二.数据分析 我们随机选择了一天去现场调查基础教学楼电梯的使用情况,列表如下: 电梯名称 停靠层数 乘客限制 重量限制/kg 电梯开关时间/s 乘客进出电梯时间/s 电梯1 8-18层(双层) 15人 1150 4s

对于电梯调度的想法

电梯调度 现有一新建办公大厦,共有21层,共有四部电梯,所有电梯基本参数如下表所示: 电梯编号 可服务楼层 最大乘客数量 最大载重量 1 全部楼层 10 800 kg 2 单层 10 800 kg 3 双层 20 1600 kg 4 全部楼层 20 2000 kg 其使用规定如下: 1.楼层号为0~20,其中0号为地下一层: 2.有楼层限制的电梯不在响应楼层停靠,如单双层: 3.所有电梯采用统一按钮控制 请根据上述要求设计并实现一个电梯控制程序,如果有图形显示就更好了. 对于这个问题我有以下想法

课堂练习--电梯调度

一.题目要求 •石家庄铁道大学基础大楼一共有四部电梯,每层都有人上下,电梯在每层都停.信1201-1班的XXX东觉得在每层都停觉得不耐烦. •由于楼层不太高,在上下课高峰期时时,电梯从一层上行,但只允许停在某一楼层.在一楼时,每个乘客选择自己的目的层,电梯则自动计算出应停的楼层. •问电梯停在那一楼层,能够保证这次乘坐电梯的所有乘客爬楼梯的层数之和最少. 二.设计思想 这次的电梯的设计题目一开始我其实想明白了,但是老师后来讲了半天结果又说迷糊了...所以今天做作业之前看了一下同学们的设计思想,发

电梯调度系统(界面由C图形库编绘)

电梯调度系统编程 1.编程题目 电梯调度. 2.结对编程组员 黄冠译,刘畅. 3.编程语言 C语言图形库. 4.题目要求: 5.代码运行及结果调试: ① 运行界面为C++图形库支持,开始运行的初始界面如图,且默认所有电梯初始状态都为1楼,此时不分奇偶层: ② 我设置了鼠标响应事件,左边上下箭头为当前楼层有人要上或下的按钮,可以用鼠标直接点击响应,点击后要输入有多少人在此楼层等待,示例点击5楼,输入15人,如图所示: ③ 输入完毕后,电梯会根据单双层或全部楼层4个电梯的忙碌状态调度一个电梯过去,第

电梯调度之需求分析

电梯调度之需求分析 结对人员:郎国杰.刘伯建 一.项目背景 石家庄铁道大学基础教学楼中有四部电梯,然而基础教学楼却有十八层,每天都有学生们忙碌的去上课,每天都有成群的学生在排队等电梯,而有时候却还不如直接爬上去来的快 二.项目目的 为学生缓解高峰期电梯的压力,提高电梯的利用率. 三.项目调查 (1)总共18层,4部电梯,每部限乘15人,重量限制1150kg. (2)1,2号电梯只停1层以及8-18双层楼,3,4号电梯只停一层以及8-18单层楼. (3)高峰期:7:30--8:00,11:50--