Programmieren eines KO-Systems, Fehler im Ansatz



  • Aufgabe:
    Ein Kneipenbesitzer hat Sie um ein Programm zur Unterstützung seiner regelmäßigen Turnierveranstaltungen gebeten. Nach Eingabe der angemeldeten Teilnehmer und der Anzahl der verfügbaren Geräte (=Anzahl der Spiele, die gleichzeitig durchgeführt werden können) soll der Computer einen Spielplan für ein simples KO-System entwerfen und angeben, welche Paarungen auf welchem Gerät spielen müssen. Nach Eingabe eines Ergebnisses für ein Gerät, soll die nächste Paarung (für die beide Spieler verfügbar sind) ermittelt, und das Gerät für diese reserviert werden. Nach Beendigung des Turnieres sollen die zwei besten Spieler ausgegeben werden, um die Preisverleihung vorzubereiten.

    Ich habe Probleme bei der Erstellung dieses Programmes. Ich ermittle per Zufallszahl wer gegen wen spielt. Dafür habe ich mir eine kurze Prozedur einfallen lasse, danach will ich wieder per Zufall ermitteln wer gegen wen spielt, muss mein Feld, wo die Namen drinnen stehen also um die beiden die schon per Zufall ermitteln wurden verkürzen.
    Wie mache ich das ich habe ein zweidimensionales Array, ich darf noch kein String Array erzeugen, deshalb war mein Lösungsansatz eben ein zweidimensionales Array um die Namen einzugeben.
    Ich habe versucht eine rukursive Funktion zu erstellen, die das um die Namen derjengen verkürzt, die schon per Zufall ermittelt wurden. ... Leider bin ich da schon daran gescheitert, dass ich keinen Zeiger auf ein mehrdimensionales Feld setzen darf! Mit Schleifen Felder zu verkürzen habe ich auch nicht hinbekommen.

    Was mir noch Sorgen macht ist, was soll passieren, wenn eine ungerade Anzahl in dieses KO System eingegeben wird?

    Danach muss ich noch programmieren, eben das gespeichert wird welche "Zufallszahlen" bzw. Leute zusammengehören und den Sieger ermitteln. Wie mache ich das? Ich hab mir überlegt die leute, die zusammengehören wieder in ein zweidimensionales Array zu schreiben.
    Dann sprech ich das neue Array an, gib manuell ein, wer der der Sieger ist.

    Dann soll wieder per Zufall ermittelt werden, wer gegen wen spielt, solange bis einer überbleibt.

    ... bevor ich noch verzweifle könntet ihr mir helfen?

    Mein Ansatz:

    #include <iostream>
    #include <cmath>
    #include <ctime>
    using namespace std;
    
    	char name[50][6] = {0};
    
    void aufteilen (int teilnehmer){
    
    	int zufall =0;
    	int zufall2=0;
    
    	srand (time(NULL));
    	zufall=  rand()%teilnehmer;
    	zufall2=  rand()%teilnehmer;
    	while (zufall2 == zufall)
    		zufall2=  rand()%teilnehmer;
    
    	cout << name[zufall] << " spielt gegen " << name[zufall2];
    
    }
    int main () {
    
    	cout << "Bitte geben Sie die Anzahl der Teilnehmer ein! ";
    
    	int teilnehmer;
    	cin >> teilnehmer;
    
    for(int i =0;i<teilnehmer;i++)
    		cin >>  name[i];
    
    	aufteilen(teilnehmer);
    
    	return 0;
    }
    


  • Du darfst nicht std::string verwenden? Ärgerlich.

    Ein schneller Lösungsansatz: Statt per Zufall Spieler gegeneinander antreten zu lassen, könntest du für jeden Spieler eine Liste bereithalten, gegen wen er noch nicht gespielt hat. Darfst du Strukturen erstellen?



  • Michael E. schrieb:

    Ein schneller Lösungsansatz: Statt per Zufall Spieler gegeneinander antreten zu lassen, könntest du für jeden Spieler eine Liste bereithalten, gegen wen er noch nicht gespielt hat.

    Das hat dann aber nichts mehr mit KO-System zu tun. Wenn 2 Spieler bereits gegeneinander gespielt haben, ist einer von beiden ausgeschieden.



  • Stimmt.


Anmelden zum Antworten