No older revisions available
No older revisions available
CPP_Study_2005_1/BasicBusSimulation/남상협 ¶
- 작성자 : 01 남상협
- 일시 : 05.08.12 10:43
데이터 ¶
~cpp
100
20 30 25 50 30 24 50
Source ¶
~cpp
//Simulation.cpp
#include <fstream>
#include <vector>
#include <iostream>
#include "BusSimulation.h"
using namespace std;
void main()
{
ifstream fin("data.txt");
BusSimulation busSimulation(fin);
busSimulation.readBusData();
busSimulation.readTimeInput(cin,cout);
busSimulation.printResult(cout);
}
~cpp
//BusSimulation.h
#ifndef _BUS_SIMULATION_H_
#define _BUS_SIMULATION_H_
#include <iostream>
#include <vector>
#include <fstream>
#include "Bus.h"
using namespace std;
class BusSimulation {
private:
vector<Bus> m_buses;
ifstream &m_fin;
double m_roundDistance;
public:
BusSimulation(ifstream &fin) : m_fin(fin) {}
void readBusData();
istream& readTimeInput(istream &in, ostream &out);
void increaseTime(int time);
ostream& printResult(ostream &out);
};
#endif
~cpp
//BusSimulation.cpp
#include <iostream>
#include <fstream>
#include <vector>
#include "BusSimulation.h"
void BusSimulation::readBusData()
{
m_fin>>m_roundDistance;
double velocity=0;
while(m_fin>>velocity)
{
Bus bus(velocity,m_roundDistance);
m_buses.push_back(bus);
}
}
void BusSimulation::increaseTime(int time)
{
for(vector<Bus>::iterator it=m_buses.begin(); it!=m_buses.end(); ++it)
it->increaseTime(time);
}
ostream& BusSimulation::printResult(ostream &out)
{
for(vector<Bus>::iterator it=m_buses.begin(); it!=m_buses.end(); ++it)
out<< it->getPosition()<<"\n";;
return out;
}
istream& BusSimulation::readTimeInput(istream &in, ostream &out)
{
int minute = 0;
int hour = 0;
out<<"몇시간 후의 버스 위치를 보시겠습니까?"<<"\n"<<"시간 : ";
in>>hour;
out<<"분 : ";
in>>minute;
increaseTime(hour*3600 + minute*60);
return in;
}
~cpp
//Bus.h
#ifndef _BUS_H_
#define _BUS_H_
class Bus {
private:
int m_velocity; // Km/h
double m_position; // Killo meter
int m_roundDistance; // Killo meter
int m_time; // second
public:
Bus(int velocity, int roundDistance) :
m_velocity(velocity), m_roundDistance(roundDistance) {m_time=0; m_position=0;}
void increaseTime(int time) {m_time+=time; m_position+=(time*m_velocity/3600)%m_roundDistance;}
double getPosition(){return m_position;}
};
#endif