일단 하긴 했는데 이게 아닌것 같네요.
특히 앞차가 사람을 태우는 동안 그 다음 버스가 오는 걸
어떻게 구현할 지가 참 막막합니다...

~cpp 
#include<iostream.h>
#define road 300 //길은 한바퀴 순회하는데 300킬로미터. 즉 5시간 걸린다.


class Bus//시속 60km/h-->분속 1km/m으로 정함.
{
public:
	int bus_loc;//버스의 위치
	//일정한 속도로 도로위를 지나다님
	//버스정류장에서 사람들이 타는 동안 멈춤 2분 걸림.
	void move(int x_min);	
	//최종 결과를 나타낸다
	void show(int a);
};

void Bus::move(int x_min)
{
	for(;;)
	{
		if(x_min<=30){
			bus_loc=bus_loc+x_min;//분당 1킬로를 가므로 x분 후의 위치는 x킬로 뒤
			x_min=0;//0으로 초기화. 다음 계산에 이상한 값이 들어가지 않도록.
			break;
		}
		if(x_min>30){
			x_min=x_min-30;
			bus_loc=bus_loc+30;
		}
		if(30<bus_loc&&bus_loc<=60)
			bus_loc=bus_loc-2;
		else if(60<bus_loc&&bus_loc<=90)
			bus_loc=bus_loc-4;
		else if(90<bus_loc&&bus_loc<=120)
			bus_loc=bus_loc-6;
		else if(120<bus_loc&&bus_loc<=150)
			bus_loc=bus_loc-8;
		else if(150<bus_loc&&bus_loc<=180)
			bus_loc=bus_loc-10;
		else if(180<bus_loc&&bus_loc<=210)
			bus_loc=bus_loc-12;
		else if(240<bus_loc&&bus_loc<=270)
			bus_loc=bus_loc-14;
		else if(270<bus_loc&&bus_loc<=300)
			bus_loc=bus_loc-16;

		if(bus_loc>road){//300킬로를 돌면 다시 원점으로
			bus_loc=bus_loc-road;
		}
	}
	
}


void Bus::show(int a)
{
	if(bus_loc>0){	
		cout<<a+1<<"번째로 출발한 버스의 위치는 시작점으로부터 "<<bus_loc<<"km"<<endl;
	}
	else
		cout<<a+1<<"번째 버스는 아직 출발하지 않았습니다."<<endl;
}	

void main()
{
	int time=0;
	int i;
	cout<<"===============Bus Simulation=================="<<endl;
	cout<<"몇 분후의 위치를 보시겠습니까?";
	cin>>time;
	Bus bus[10];//버스 10개 생성
	bus[0].bus_loc=0;//10분 간격으로 떠난다
	bus[1].bus_loc=-10;
	bus[2].bus_loc=-20;
	bus[3].bus_loc=-30;
	bus[4].bus_loc=-40;
	bus[5].bus_loc=-50;
	bus[6].bus_loc=-60;
	bus[7].bus_loc=-70;
	bus[8].bus_loc=-80;
	bus[9].bus_loc=-90;
	for(i=0;i<10;i++)
	{
		bus[i].move(time);

	}
	cout<<"____________Result of Bus Simulation___________"<<endl;
	for(i=0;i<10;i++)
		bus[i].show(i);
}

작성자: Yggdrasil


BusSimulation
Retrieved from http://wiki.zeropage.org/wiki.php/BusSimulation/영동
last modified 2021-02-07 05:22:39