コード例 #1
0
ファイル: Teilnehmer.cs プロジェクト: LogicalByte/Liga
        /// <summary>
        /// Sortieren der Teilnehmer nach Punkte und Tordifferenz.
        /// </summary>
        /// <param name="bTeilnehmer"></param>
        /// <returns></returns>
        /// <remarks>
        /// Implementierung eines InsertSort-Algorithmus. Sollte die Punktezahl gleich, aber die Tordifferenz geringer sind, wird die Position getauscht. Um die Reihenfolge
        /// des ursprünglichen Arrays nicht zu verändern, wird eine Kopie erstellt und mit diesem gearbeitet. Zum Abschluss wird geschaut, wo sich das Team im sortierten
        /// Array befindet und die Tabellenposition = Index im sortierten Array gesetzt.
        /// </remarks>
        private static Teilnehmer[] TabelleSortieren(Teilnehmer[] bTeilnehmer)
        {
            Teilnehmer[] SortierteTeilnehmer = new Teilnehmer[bTeilnehmer.Length];
            Array.Copy(bTeilnehmer, SortierteTeilnehmer, bTeilnehmer.Length);

            Console.Write("Tabelle wird sortiert...");
            for (int i = 0; i < SortierteTeilnehmer.Length - 1; i++)
            {
                for (int j = i + 1; j > 0; j--)
                {
                    if (SortierteTeilnehmer[j - 1].Punkte < SortierteTeilnehmer[j].Punkte ||
                        (SortierteTeilnehmer[j - 1].Punkte == SortierteTeilnehmer[j].Punkte && SortierteTeilnehmer[j - 1].Tordifferenz < SortierteTeilnehmer[j].Tordifferenz))
                    {
                        Teilnehmer tmpTeilnehmer = SortierteTeilnehmer[j - 1];
                        SortierteTeilnehmer[j - 1] = SortierteTeilnehmer[j];
                        SortierteTeilnehmer[j]     = tmpTeilnehmer;
                    }
                }
            }
            // Setzen der Tabellenposition, indem die Position im sortierten Array bestimmt und übertragen wird
            for (int i = 0; i <= SortierteTeilnehmer.Length - 1; i++)
            {
                for (int j = 0; j <= bTeilnehmer.Length - 1; j++)
                {
                    if (bTeilnehmer[j].ID == SortierteTeilnehmer[i].ID)
                    {
                        bTeilnehmer[j].Tabellenposition = i + 1; break;
                    }
                }
            }

            Console.WriteLine("fertig!");
            return(bTeilnehmer);
        }
コード例 #2
0
        static void Main(string[] args)
        {
            // Initialisieren der Teilnehmer gemäß der Teilnehmeranzahl
            Teilnehmer[] teilnehmer = new Teilnehmer[Teilnehmeranzahl];
            // Initialisieren der Spielpaarungen gemäß der Formel n/2*(n-1), wobei n=Teilnehmeranzahl
            Spielpaarungen[] spielpaarungen = new Spielpaarungen[Teilnehmeranzahl * (Teilnehmeranzahl - 1) / 2];

            Random rnd = new Random();

            // Erstellen der Teilnehmer
            for (int i = 0; i < Teilnehmeranzahl; i++)
            {
                teilnehmer[i] = new Teilnehmer("Team " + (i + 1), rnd.Next(1, 100), i);
            }
            // Erstellen der Spielpaarungen
            spielpaarungen = Spielpaarungen.SpielpaarungenGenerieren(teilnehmer);
            // Austragen der Spielpaarungen
            Spielpaarungen.SpieleAustragen(teilnehmer, spielpaarungen, SpielpaarungenAnzeigen);

            // Sortierung und Ausgabe der Endtabelle
            if (TabelleAnzeigen == true)
            {
                Teilnehmer.TabelleAusgeben(teilnehmer, TabelleSortieren);
            }
            teilnehmer[0].Teilnehmerinfo(spielpaarungen, teilnehmer);
        }
コード例 #3
0
 /// <summary>
 /// Trägt das übergebene Ergebnis in die Spielpaarungen ein
 /// </summary>
 /// <param name="bSpielpaarung">Objekt der Spielpaarungen</param>
 /// <param name="bTeilnehmer1">Objekt des Heimteams</param>
 /// <param name="bTeilnehmer2">Objekt des Auswärtssteams</param>
 /// <param name="Tore1">Tore des Heimteams</param>
 /// <param name="Tore2">Tore des Auswärtsteams</param>
 /// <param name="Siege1">Summand für das Heimteam</param>
 /// <param name="Siege2">Summand für das Auswärtsteam</param>
 /// <param name="Unentschieden1">Summand für das Heimteam</param>
 /// <param name="Unentschieden2">Summand für das Auswärtsteam</param>
 /// <param name="Niederlage1">Summand für das Heimteam</param>
 /// <param name="Niederlage2">Summand für das Auswärtsteam</param>
 /// <param name="Tordifferenz1">Summand für das Heimteam</param>
 /// <param name="Tordifferenz2">Summand für das Auswärtsteam</param>
 /// <param name="Punkte1">Summand für das Heimteam</param>
 /// <param name="Punkte2">Summand für das Auswärtsteam</param>
 private static void ErgebnisEintragen(Spielpaarungen bSpielpaarung, Teilnehmer bTeilnehmer1, Teilnehmer bTeilnehmer2, int Tore1, int Tore2,
                                       int Siege1, int Siege2, int Unentschieden1, int Unentschieden2, int Niederlage1, int Niederlage2,
                                       int Tordifferenz1, int Tordifferenz2, int Punkte1, int Punkte2)
 {
     bSpielpaarung.Tore1         = Tore1;
     bSpielpaarung.Tore2         = Tore2;
     bTeilnehmer1.Siege         += Siege1;
     bTeilnehmer2.Siege         += Siege2;
     bTeilnehmer1.Unentschieden += Unentschieden1;
     bTeilnehmer2.Unentschieden += Unentschieden2;
     bTeilnehmer1.Niederlagen   += Niederlage1;
     bTeilnehmer2.Niederlagen   += Niederlage2;
     bTeilnehmer1.Tore          += Tore1;
     bTeilnehmer2.Tore          += Tore2;
     bTeilnehmer1.Gegentore     += Tore2;
     bTeilnehmer2.Gegentore     += Tore1;
     bTeilnehmer1.Tordifferenz  += Tordifferenz1;
     bTeilnehmer2.Tordifferenz  += Tordifferenz2;
     bTeilnehmer1.Punkte        += Punkte1;
     bTeilnehmer2.Punkte        += Punkte2;
 }