Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Algorithmus Rutschsystem + Doppelrundig

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1048
Wohnort: Niederbayern

BeitragVerfasst am: 01.07.2012, 17:12    Titel: Algorithmus Rutschsystem + Doppelrundig Antworten mit Zitat

Code:
dim shared as integer spieler,runden,ppr,startwert
redim shared as integer paarungen(1 to 1, 1 to 2)

declare sub ErstellePaarungen (runde as integer)

input "Anzahl Spieler:",spieler
if spieler<3 then end

if spieler/2 <> int(spieler/2) then spieler +=1' wenn ungerade um eins erhöhen

runden=spieler-1
ppr=spieler/2 'Partien pro Runde

redim paarungen(1 to ppr, 1 to 2)

startwert=1
for r as integer=1 to runden

  ErstellePaarungen (r)
  print "R" & r & ": ";
  for i as integer=1 to ppr
    print paarungen(i,1) & "-" & paarungen(i,2) &" ";
  next i
  print
  startwert=paarungen(ppr,2)
next r

sleep
end

sub ErstellePaarungen (runde as integer)
  dim as integer rotation
  rotation=startwert
  for i as integer=1 to ppr
    paarungen(i,1)=rotation
    rotation +=1
    if rotation>runden then rotation=1
  next i
  for i as integer=ppr to 2 step -1
    paarungen(i,2)=rotation
    rotation +=1
    if rotation>runden then rotation=1
  next i
  paarungen(1,2)=spieler

  if runde/2 = int(runde/2) then swap paarungen(1,1),paarungen(1,2)' bei jeder geraden Runde erstes Paar tauschen
end sub


Ich habe obigen Code und wollte euch mal fragen, ob ihr eine bessere Lösung für Rutschsystem bzw. eine bessere Lösung für Doppelrundig kennt. Ich habe zwar eine Lösung gefunden, aber vielleicht gibt es eine bessere elegantere Lösung?

Bei Doppelrundig habe ich einfach die Rundenzahl mal 2 genommen und bei der Ausgabe die Paarungen einfach getauscht.

Bei 50 Runden habe ich dann ab Runde 26 anstatt
Code:
print paarungen(i,1) & "-" & paarungen(i,2) &" ";
einfach
Code:
print paarungen(i,2) & "-" & paarungen(i,1) &" ";

genommen. Ich bin mir aber sicher es gibt eine bessere Lösung.

Bei Rutschsystem wo jeder einen Platz bei jeder Runde weiter rutscht, habe ich auch so eine ähnliche Lösung wie bei Doppelrundig im Kopf. Aber bevor ich alles in den Quellcode einfüge, will ich von euch nochmals die Ideen wissen. Vielleicht hat der ein oder andere eine bessere Idee als ich?

edit 2.7.2012: So ganz scheint meine Idee nicht zu funktionieren. Bei Doppelrundig und nur 2 Teilnehmern, gibt es eine falsche Paarung in Runde 2. Bei 40 Teilnehmern gibt es einen Grafikfehler, der nur durch einen Print-Satz behoben werden kann??!! Schon merkwürdig das ganze. Von der Theorie her würde es funktionieren.

Gruß
ALWIM
_________________
SHELL SHUTDOWN -s -t 05
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz