Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Bowling Auswertung

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
23.05.2004, 18:56 Uhr
~Alucard
Gast


Hai Leute!

Hai, ich möchte mal ein programm schreiben, das ein Bowling-turnier auswertet.

- es sollen maximal 100 Spieler teilnehmen
- jeder Spieler hat 10 Würfe
- maximal können 10 Pins umgeworfen werden
- nach jedem Spieler der seinen letzten Wurf geworfen hat, soll eine Bestenliste angezeigt werden, mit den aktualisierten daten


Ich habe keine ahnung wie ich das mit der Bestenliste mache.
Außerdem, kann ich für die zahlen nicht so eine art zufallsfunktion nehmen,
weil man ansonsten ja 10x10x100=10 000 eingaben machen müßte.

Habt ihr mal vorschläge?
TheAlucard@web.de

THX im vorraus
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
23.05.2004, 19:03 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


ohne jetzt die genauen regeln da zu kennen...

für den zufall guck dir mal rand() an oder schau in die FAQ da ist auch ein beitrag zu zufallszahlen drin...

an sonsten brauchst du halt nen array und kannst auch mal in der forumssuche nach qsort schauen um deine bestenliste am ende zu sortieren...

dann sollte das programm auch schon mehr oder weniger fertig sein
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 23.05.2004 um 19:04 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
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.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
23.05.2004, 22:46 Uhr
~toxic
Gast


hi, naja, sind wohl keine bowler hier, was ?
bei der ganzen sache musst schon die regeln beachten, zum ersten hat jeder spieler 2 wurf pro frame, ausser er macht einen "strike" (also alle zehn im ersten wurf), ist dies der fall werden die nächsten 2 würfe zu diesem dazugezählt, wirft er einen "spare" (alle zehn mit zwei wurf) wird nur der nächste wurf dazugezält, welches man in der bestenliste ja berücksichtigen muss da die punkte dann aus der aktuellen runde noch nicht bekannt sind. dazu kommt noch das im 10ten frame 3 würfe möglich sind wenn mit dem 1ten bzw. 2ten "abgeräumt" wurde, die regel der punkterechnung trifft dann im 10ten frame nicht mehr zu, dh. im 10ten frame können maximal 30 punkte gemacht werden (bei 3 strikes), so sind dann maximal 300 punkte pro spiel möglich.
und nun pack das mal in einen algorithmus...
...das wär doch was für die rätsel-ecke !
--
grusz
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
24.05.2004, 00:09 Uhr
(un)wissender
Niveauwart


Das ist nun wirklich nicht schwer, oder?
Ich will ja auch nicht die ganze Aufgabe machen, aber mein Beipspiel dahingehend zu modifizieren ist nicht wild.
Viel Erfolg!
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
24.05.2004, 01:15 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@unwissender
deine lösung hat ja mehr include zeilen als vermutlich eine von mir angebotene Lösung insgeasamt an quellcode hätte
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
24.05.2004, 09:10 Uhr
(un)wissender
Niveauwart


Viele Leute vergessen includes.
Manchmal ist Code nur aufgrung der includes compilerabhängig und damit nicht portabel.
Das komm daher, dass die Standardlib unterschiedlich implementiert ist, und damit auch verschiedene Header vorincludiert.
Nur weil der Compiler sich nicht über fehlende Deklararionen beschwert, heißt das noch lange nicht, dass man alles vernünftig includiert hat.
Bspw.könnte ich <cstdlib> und <ctime> bei meinem Compiler weglassen, aber das wäre nicht korrekt.
Ich bemühe mich darum, alle includes aufzuschreiben.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
06.06.2004, 11:11 Uhr
~Alucard
Gast


ähhh Leute, ich sollte sagen das ich gerade erst angefangen habe.
Ich kann mit dem was (un)wissender geschrieben hat gar nichts anfangen.

class und privat hab ich noch nie gehört?

gibt es nich ne einfachere lösung?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
06.06.2004, 11:45 Uhr
(un)wissender
Niveauwart


Ich weiß nicht, die Lösung ist schon ziemlich simpel.
Mach doch mal einen eigenen Vorschlag, dann können wir dir helfen.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
06.06.2004, 12:21 Uhr
DaReal



Also ohne Klassen sowas umzusetzen ist fast unmöglich oder mit sehr sehr viel tipparbeit und unübersichtlichkeit verbunden ! Beschäftige mich seid gestern auch mit Klassen ! Wenn Du was über Klassen lernen willst hier 2 gute links :

http://hal.iwr.uni-heidelberg.de/lehre/inf1/html/node50.html
http://cplus.kompf.de/tutor.html#ToC4
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: