002
23.05.2004, 19:38 Uhr
(un)wissender
Niveauwart
|
Also, wenn jeder von den hundert zehn Würfe hat, dann gibt es nur tausend Eingaben.
Hier mal ein Schnellschuss, vielleicht hilft dir das!
C++: |
#include <algorithm> #include <iostream> #include <iterator> #include <cstdlib> #include <sstream> #include <string> #include <vector> #include <ctime>
class Player { public: Player() {} Player(const std::string &name, int pins) : name_(name), pins_(pins) {} friend std::ostream& operator<<(std::ostream &out, const Player &player) { return out << "Name: " << player.name_ << "\nPins: " << player.pins_; } const std::string & getName() const {return name_;} void setName(const std::string &name) { name_ = name;} //nach pins sortieren bool operator<(const Player &player) const { return pins_ < player.pins_; } int getPins() const {return pins_;} void setPins(int pins) { pins_ = pins; } void addToPins(int number) { pins_ += number; }
private: std::string name_; int pins_; };
int main(int argc, char* args[]) { const int ROUNDS = 10, MAX_PINS = 10; srand(time(0)); if(argc < 2) { std::cout << "Bitte Anzahl der Spieler eingeben!" << std::endl; return 0; } std::vector<Player> players(atoi(args[1])); std::stringstream formater; for(unsigned int i = 0; i < players.size(); ++i ) { formater << "Spieler " << i + 1; players[i].setName(formater.str()); players[i].setPins(0); formater.str(""); } //Für alle Runden for(int i = 0; i < ROUNDS; ++i) { //Für jeden Spieler for(unsigned int j = 0; j < players.size(); ++j ) { //Zufällig werfen, im Intervall ]0,10[ players[j].addToPins(rand() % (MAX_PINS + 1)); } //Nach Pins sortieren std::sort(players.begin(), players.end()); std::cout << std::endl << "Bestenliste der Runde " << i + 1 << ":" << std::endl; //Ausgabe std::copy(players.rbegin(), players.rend(), std::ostream_iterator<Player>(std::cout, "\n")); } return 0; }
|
-- Wer früher stirbt ist länger tot. Dieser Post wurde am 23.05.2004 um 19:48 Uhr von (un)wissender editiert. |