码迷,mamicode.com
首页 > 编程语言 > 详细

电梯调度--c++--软件工程

时间:2015-04-19 10:04:42      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:

一、设计思路

(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++--软件工程

标签:

原文地址:http://www.cnblogs.com/dlyxx/p/4438618.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!