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:

Prob bei Erstellung eines Spielplanes für Fussballgame

 
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
mkfezzo



Anmeldungsdatum: 16.08.2007
Beiträge: 25

BeitragVerfasst am: 16.08.2007, 21:08    Titel: Prob bei Erstellung eines Spielplanes für Fussballgame Antworten mit Zitat

Hallo zusammen!
Mir brennt die Birne, seit zwei Tagen versuche ich auf diverse Art und Weise einen Spielplan für ein Fussballgame zu proggen. Das schien so einfach, aber nach etlichen versuchen hier mal mein bis dato bester versuch:

nr=0'zähler für paarungsspeicher
for sptag=1 to 17'spieltage-1
for lauf=1 to 9'neun partien pro spieltag
do
z1=int(rnd(1)*18)+1'gegner 1
z2=int(rnd(1)*18)+1'gegner 2
if z1<>z2 then 'bitte nicht derselbe
f=0'=kein problem
for t=0 to 1000'zu hoch gesetzt, ich weiss
a$=str$(z1)
b$=str$(z2)
nix1$=a$+"-"+b$
nix2$=b$+"-"+a$'im paarungsspeicher nixda nach paarung suchen
if nixda(t)=nix1$ or nixda(t)=nix2$ then f=1:exit for'noch nicht vergeben also raus...
next t
if f=0 then exit do
end if
loop'sonst solange bis paarung gefunden die noch nicht existiert
paarungen(z1,sptag)=z2'speichern
paarungen(z2,sptag)=z1'auch fürn gegner
nixda(nr)=nix1$:nr=nr+1:? nixda(nr-1)'paarungsspeicher erweitern
nixda(nr)=nix2$:nr=nr+1:? nixda(nr-1)'dito gespiegelt
? nr
next lauf
next sptag
for t=1 to 18
for z=1 to 18
? paarungen(t,z);
next z
?
next t

...leider habe ich immer diverse spieltage bei den vereinen die einfach übergangen werden, also "nullen" bei mehreren Spieltagen hintereinander.
Und finde das problem absolut nicht!

wäre sehr nett, wenn das einer erkennen könnte (wirklich, das ist das beste was ich seit zwei tagen hinbekomme!)

Besten Dank! :cry:
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 16.08.2007, 21:12    Titel: Antworten mit Zitat

also ich würde das thereotisch so lösen:

der spielplan wird nicht zufällig erstellt, sondern schön der reihe nach: mannschaft 1 gegen mannschaft 2, mannschaft 1 gegen mannschaft 3...... mannschaft 1 gegen mannschft x --- (mannschaft 2 gegen mannschaft 1 - ist schon drin), mannschaft 2 gegen mannschaft 3, usw.....
das lässt sich prima mit for-schleifen lösen.
danach würde ich den plan nochmal mit eine for-schleife durchlaufen und dann jeden eintrag mit einem zufallseintragvertauschen (SWAP) .
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
mkfezzo



Anmeldungsdatum: 16.08.2007
Beiträge: 25

BeitragVerfasst am: 16.08.2007, 21:19    Titel: das habe ich schon versucht... Antworten mit Zitat

(so ähnlich, allerdings ohne swap), ergebnis:
es passiert dann öfter, das eine mannschaft an einem Spieltag vielleicht zwei oder mehr spiele ausführt...sollte aber nur ein spiel sein.
Das ist echt ne kopfnuss!
Trotzdem danke...vielleicht sollte ich das nochmals (heul) mit einfachen? for-next schleifen probieren mit dem Kopf durch die Mauer wollen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 16.08.2007, 21:30    Titel: Antworten mit Zitat

hm, das mit dem spieltag könntest du evtl so lösen, dass du mit einer Function (ginge sicher auch anders, ist so aber imo bequemer) prüfst, ob eine der mannschaften, die geSWAPt werden sollen, schon an diesem tag spielt...
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
mkfezzo



Anmeldungsdatum: 16.08.2007
Beiträge: 25

BeitragVerfasst am: 16.08.2007, 21:51    Titel: Antworten mit Zitat

ich stimme dir insofern zu, dass ich diese variante mit der vorherigen Prüfung auch schon einmal unter den 180? varianten hatte mit denen ich mir die finger wundgetippt habe. ich möchte nur ungern von der jetzigen variante abweichen (nichtnochmalvonvornezumxtenmale). ich habe die logik des letzten codes zigmal durchgespielt-und finde das ding zwar nicht schön, aber logisch fehlerfrei (was ja offensichtlich nicht stimmt) und das wurmt mich.
Ich fürchte ich übersehe oder überdenke da nur eine winzige kleinigkeit...und schwupps läuft das teil. ich hab das hier mal reingehauen, da ich hoffe das vier augen mehr sehen als zwei...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4699
Wohnort: ~/

BeitragVerfasst am: 17.08.2007, 21:56    Titel: Antworten mit Zitat

Wenn ich das richtig sehe, testest du nur ob eine bestimmte Kombination bereits aufgetreten ist, aber nicht, dass jede Mannschaft an jedem Spieltag nur ein Turnier bestreiten soll (nehme ich mal an, auch wenn ich von Fußball nicht viel Ahnung habe cool ). Was also passieren kann ist folgendes: Am ersten Spieltag wird erst 1 gegen 2 ausgelost (lauf=1) und anschließend 1 gegen 3 (lauf=2). Damit kommt am ersten Spieltag irgend eine Mannschaft nicht zum Zug.

Was anderes: Statt rnd(1) sollte rnd auch schon reichen. Die Berechnung von nix1$ und nix2$ würde ich aus der Schleife (t=0 to 1000) rausnehmen, weil sie da drin ja immer gleich sind.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
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