1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| struct Vanne {
explicit Vanne(int nb);
void start();
void stop();
void join();
}
std::vector<Vanne> vannes;
while(1) {
std::string str, cmd;
// on entre un num de piece
std::getline(std::cin, str);
// si rien d'entré, on stop
if(str.empty()) break;
// on parse le string entré (de la forme start/stop n° de Vanne)
int n;
std::stringstream ss;
ss << str;
ss >> cmd >> n;
if(cmd == "start") {
// on ajoute et démarre un test
vannes.emplace_back(n);
vannes.back().start();
}
else if(cmd == "stop") {
// on stop un test s'il existe
auto it=std::find(vannes.begin(), vannes.end(), n);
if(it != vannes.end()) {
*it.stop();
}
}
}
// on attend la fin des tests en cours
for(auto& v: vannes) {
v.join();
} |
Partager