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