Elevator.cpp in MyElevator.rar


This is an algorithm to achieve the lift, two elevators, six floors to VC 6.0...Original Link
    Sponsored links

			
#include "stdafx.h"
#include "Elevator.h"


CElevator::CElevator()
{
	m_iFloor = 1;
	m_iHeight = 0;
	m_iLoadNum = 0;
	m_StepList.clear();
	m_Status = WAIT;
}

CElevator::~CElevator()
{

}

void CElevator::DropAndLoad(UINT Floor , UINT& in , UINT & out)
{
	m_iLoadNum += (in - out);
	////////////////////////
}

float CElevator::GetWaitTime(CStop stop1 , CStop stop2)
{
	if (m_StepList.empty())
	{
		return abs(m_iHeight - (stop1.GetFloor() - 1)*10) * 2.0 /10.0;
	}
	else
	{
		float ftime = 0.0;
		bool  bContinue = true;
		list<CStep>::iterator pos = m_StepList.begin();
		for( ; pos != m_StepList.end() ; ++pos)
		{
			if ((*pos).CanLoad(stop1, stop2))
			{
				ftime += (*pos).GetPartTime(stop1 , m_iHeight);
				bContinue = false;
				break;
			}
		}
		if (bContinue)
		{
			list<CStep>::iterator pos1 = m_StepList.end();
			--pos1;
			CStop stop3 ;
			if (UP == (*pos1).GetStatus())
			{
				(*pos1).GetHStop(stop3);
			}
			else 
			{
				(*pos1).GetLStop(stop3);
			}
			ftime += abs(stop1.GetFloor() - stop3.GetFloor()) * 2.0;			
		}
		return ftime;
	}
}

void CElevator::InsertStop(_STATUS status , CStop stop1 , CStop stop2)
{
	if (m_StepList.empty()) 
	{
		float floor = GetFloor();   //
		if (floor == (float)(stop1.GetFloor()))//不用空载跑   //
		{
			CStep step;
			step.m_StopVector[stop1.GetFloor()-1] = stop1;
			step.m_StopVector[stop2.GetFloor()-1] = stop2;
			step.SetStatus(stop1.GetFloor() < stop2.GetFloor() ? UP : DOWN);
			m_StepList.push_back(step);
			SetStatus( stop1.GetFloor() < stop2.GetFloor() ? UP : DOWN);
		}
		else//有空载跑
		{
			if (stop1.GetFloor() < stop2.GetFloor())//UP
			{
				if (floor < stop1.GetFloor())  //
				{
					if(floor != (int)floor)   //
					{
						if (UP == status) 
						{
							floor = (int)floor + 1;
						}
						else
						{
							floor = (int)floor;
						}
					}
						
					CStep step;
					step.m_StopVector[(int)floor - 1] = CStop((int)floor , 0 , 0);
					step.m_Sto			

			...
			...
			... to be continued.

  This is a preview. To get the complete source file, 
  please click here to download the whole source code package.

			
			


Project Files

    Sponsored links
NameSizeDate
 Elevator.cpp12.49 kB03-08-05 18:43
 Elevator.h790.00 B03-08-05 05:19
 MyElevator.aps35.70 kB30-07-05 08:58
 MyElevator.clw2.27 kB03-08-05 05:51
 MyElevator.cpp2.07 kB20-07-05 23:19
 MyElevator.dsp4.49 kB03-08-05 05:51
 MyElevator.dsw543.00 B20-07-05 23:19
 MyElevator.h1.34 kB20-07-05 23:19
 MyElevator.ncb121.00 kB10-07-06 09:26
 MyElevator.opt213.00 kB10-07-06 09:26
 MyElevator.plg1.81 kB10-07-06 09:24
 MyElevator.positions875.00 B03-08-05 20:28
 MyElevator.rc7.13 kB30-07-05 08:58
 MyElevatorDlg.cpp11.64 kB03-08-05 19:12
 MyElevatorDlg.h2.68 kB30-07-05 10:46
 ReadMe.txt3.57 kB20-07-05 23:19
 MyElevator.ico1.05 kB20-07-05 23:19
 MyElevator.rc2402.00 B20-07-05 23:19
 <res>0.00 B10-07-06 09:23
 Resource.h1.35 kB21-07-05 20:49
 StdAfx.cpp212.00 B20-07-05 23:19
 StdAfx.h1.03 kB20-07-05 23:19
 Step.cpp7.04 kB03-08-05 18:52
 Step.h902.00 B03-08-05 18:43
 Stop.cpp1.12 kB03-08-05 05:03
 Stop.h653.00 B03-08-05 05:15
 Stop.h.bak701.00 B03-08-05 05:02
 <MyElevator>0.00 B10-07-06 09:26
...

Related Items

    Sponsored links