일단 하긴 했는데 이게 아닌것 같네요.
특히 앞차가 사람을 태우는 동안 그 다음 버스가 오는 걸
어떻게 구현할 지가 참 막막합니다...
- 열심히 할라고 한거 같지만 문제의 의도에서 벗어 났음. 이 문제는 실제 각 이벤트가 일어나면 다른 조건에도 긴밀하게 영향을 주고 받아야 제대로 돌아 간다. 버스가 이동할때와 버스 정류장에 도착할때 다른 데이터들에게 어떠한 영향을 끼치는지에 대해서 생각해 보아야 한다. 즉 각각의 데이터에 영향을 끼치는 이벤트가 어떠한 상황에 발생하는가를 생각해보고 그 상황에서 영향을 끼치는 데이터에 어떠한 방식으로 그 영향을 반영할 것인가도 생각해볼 문제- 상협
~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);
}