![]() |
Hilfe bei Algorithmus. EM-Gruppen Platz Berechnung
Ich muss euch mal wieder belästigen.
Ich programmiere gerade eine kleine EM Tabelle. Man kann die Länder eintragen und die Tore. Ich bin gerade bei der Berechnung nach den Gruppenspiel (also wer in die Endrunde kommt). Habe bisjetzt auch fast fertig. Ich scheitere an der Platzberechnung. Deswegen wollt ich euch mal fragen, wie ihr das machen würdet. Also ich hab ein Stringgrid, wo alles berechnet wird. Sieht folgendermaßen aus:
Code:
Ich hoffe ihr könnt mir helfen. Danke schonmal.
--------| Punkte | Tore | Diff | Platz |
--------|--------|--------|--------|--------| Land 1 | 7 | 6:4 | 2 | | --------|--------|--------|--------|--------| Land 2 | 3 | 3:5 | -2 | | --------|--------|--------|--------|--------| Land 3 | 4 | 5:5 | 0 | | --------|--------|--------|--------|--------| Land 4 | 3 | 5:5 | 0 | | --------|--------|--------|--------|--------| |
Re: Hilfe bei Algorithmus
Hallo,
Als erstes würde ich die Punkte vergleichen mit
Delphi-Quellcode:
Als nächstes musst Du ja die Tordifferenz auf dem selben Weg vergleichen.
if Land1.Punkte > Land2.Punkte then
//usw
Delphi-Quellcode:
So in der Art müsstest Du vorgehen.
if Land1.Tor > Land2.Tor then
.. else if Land1.Tor = Land2.Tor then // und jetzt noch prüfen ob die geschossenen Tor größer oder gleich sind. Gruß Jens |
Re: Hilfe bei Algorithmus
Hi!
Gib bitte deinem Thread einen aussagekräftigen Titel - Hilfe suchen hier so viele - und Algorithmen gibt sind auch fast alles ;) Danke! Grüße, Frederic |
Re: Hilfe bei Algorithmus
Musst halt eine Sortierung nach Punkten machen und dann, wenn diese gleich sein sollten, nach erzielten Toren (wenn das das offizielle Verfahrung ist).
Wenn du uns etwas Code zeigst dann können wir genauer helfen, denn so scheint es, dass du uns die Arbeit machen lassen magst :zwinker: BTW: Gib deinem Thread doch bitte einen aussagekräftigeren Titel! Edit: Wo zum T***** war die rote Box :gruebel: |
Re: Hilfe bei Algorithmus
Code habe ich bis jetzt noch keinen. Ich wollte mal fragen wie ihr vorgehen würdet.
|
Re: Hilfe bei Algorithmus
Zitat:
![]() |
Re: Hilfe bei Algorithmus
Ich würde das Stringgrid nur für die Anzeige der Daten verwenden.
Die Daten selbst hätte ich in einer Tlist bzw. in zugehörigen Records:
Delphi-Quellcode:
Dann noch eine Vergleichsroutine für's Sortieren nach erzielten Punkten, und wer dann auf Liste[0] steht hat die meisten Punkte,
TFussballrec= record
Manschaft : string[20]; Spiele : integer; Toreerzielt : integer; Torebekommen: integer; Punkte : integer; end; und dann erst wird in einem Stringgrid angezeigt, oder in eine Datei ausgegeben oder .... Gruß K-H [edit] alle sind schneller als ich.... aber in die Sortierroutine kan man auch die Tore berücksichtigen oder ob die Mannschft Deutschland ist (es ist Freiiiiitag!) [/edit] |
Re: Hilfe bei Algorithmus. EM-Gruppen Platz Berechnung
Hi!
Ich denke, es reicht nicht nur diese Infos zu speichern. Man muss auch die einzelnen Spielausgänge kennen, weil sie bei Gleichheit evtl. gebraucht werden, um zu bestimmen wer weiter kommt (direkter Vergleich). Grüße, Frederic |
Re: Hilfe bei Algorithmus. EM-Gruppen Platz Berechnung
Erst mal muss ich sagen: Ich weiß wie man die Punkte ausrechnet, aber nur von Hand und im Kopf.
Mein Problem ist: Wie schreib ich des in Delphi??? |
Re: Hilfe bei Algorithmus. EM-Gruppen Platz Berechnung
Hi!
Dafür ist die Frage, wie hast du denn die Daten in Delphi, entscheidend. Wenn du die Punkte der Einzelspiele einer jeden Mannschaft hast, dann kannst du sie einfach addieren und hast dann die Gesamtpunkte der Manschaft. Grüße, Frederic |
Re: Hilfe bei Algorithmus. EM-Gruppen Platz Berechnung
Die Ergebnisse der Spiele in den Gruppen liegen in Editfelder.
Code:
So ists aufgebaut.
Land 1 [Edit] : [Edit] Land 2
|
Re: Hilfe bei Algorithmus. EM-Gruppen Platz Berechnung
Hast Du Daten nur in den Edit Felder oder auch in einem String, Record etc.
Vergleich der Edit´s könntest Du so machen..
Delphi-Quellcode:
allerdings wäre der Vorschlag aus #7 von..
if StrToInt(Edit1.Text) > StrToInt(Edit2.Text) then
Zitat:
Gruß Jens |
Re: Hilfe bei Algorithmus. EM-Gruppen Platz Berechnung
Die Daten werden gespeichert.
Nur ich habe noch nie mit TList/records gearbeitet. |
Re: Hilfe bei Algorithmus. EM-Gruppen Platz Berechnung
Dann sag doch mal wo und wie Du Daten speichern tust. Zeig uns doch einfach mal den Code den Du bislang hast. Dann wäre das ganze wesentlich einfacher.
Gruß Jens |
Re: Hilfe bei Algorithmus. EM-Gruppen Platz Berechnung
die Texte der Editfelder werden in einer *.ini Datei gespeichert.
Sonst werden die Texte nur in den Editfeldern gespeichert werden der Laufzeit. |
Re: Hilfe bei Algorithmus. EM-Gruppen Platz Berechnung
Also, wenn Du keine Code zur Verfügung stellen willst, dann kann Dir hier keiner helfen.
Du sprichst in Rätseln und es weiß hier keiner was Du bislang schon hast und was nicht. Sorry, so geht das nicht. Gruß Jens |
Re: Hilfe bei Algorithmus. EM-Gruppen Platz Berechnung
Ich hab ein Pagecontrol mit 4 Seiten.
Auf der ersten kann man die Länder in Editfeldern eintragen. Auf der zweiten sind die Gruppenspiele. Pro Gruppe eine Groupbox die so aussieht:
Code:
Auf der dritten sind Die Stringgrids.
Land 1 [Edit] : [Edit] Land 2
... Die Ergebnisse sehen dann so aus:
Code:
Die ganzen Daten in den Editfeldern werden in einer Ini gespeichert die so aussieht:
Land 1 [3] : [1] Land 2
Code:
Sonst werden die Daten nicht im Programm gespeichert. Man muss über die Editfelder an die Daten.
[Texte]
Edit1=Land1 Edit2=Land2 ... |
Re: Hilfe bei Algorithmus. EM-Gruppen Platz Berechnung
Und was ist mal mit Code?. Wie speicherst Du, wie lädst Du die Daten?. Irgeneinen Ansatz schon des Vergleichen der Daten?
Gruß Jens |
Re: Hilfe bei Algorithmus. EM-Gruppen Platz Berechnung
Zum Laden und Speichern der Edits nutze ich folgende Prozedur:
Delphi-Quellcode:
procedure EditLaden (Filename: String);
const Sectionname = 'Texte'; var Ini: TIniFile; i: integer; begin Ini := TIniFile.Create(Filename); try for i := 0 to Form1.ComponentCount - 1 do if Form1.Components[i] is TEdit then begin TEdit(Form1.Components[i]).Text := Ini.ReadString(Sectionname,TEdit(Form1.Components[i]).Name,'Fehler'); end; finally Ini.Free; end; end; procedure EditSpeichern (Filename: String); const Sectionname = 'Texte'; var Ini: TIniFile; i: integer; begin Ini := TIniFile.Create(Filename); try for i := 0 to Form1.ComponentCount - 1 do if Form1.Components[i] is TEdit then begin Ini.WriteString(Sectionname,TEdit(Form1.Components[i]).Name,TEdit(Form1.Components[i]).Text); end; finally Ini.Free; end; end; |
Re: Hilfe bei Algorithmus. EM-Gruppen Platz Berechnung
Also generell solltest du erst mal die Daten von der Oberfläche trenne. Dann solltest du dir überlegen, wie du die Daten strukturiert verwaltest. Wenn du dass hast, kannst du dir überlegen wie du die Plätze errechnest und wie du die Daten speicherst und lädst.
![]() Anbieten würden sich da ein oder besser zwei Klassen. Eine dient der Datenhaltung für die Mannschaften und die zweite für die nötigen Berechnungen. Und ich an deiner Stelle würde noch mal ganz von vorne anfangen. |
Re: Hilfe bei Algorithmus. EM-Gruppen Platz Berechnung
Entschuldige,
das ist doch grauslich! Grundsätzlich sind die Daten (die verarbeitetwerden sollen) von der Darstellung, deinem Form / Edit-Felder zu trennen! Sobald Du eine neue Oberfläche baust, kannst Du Deine Daten vergessen. So wie Du die Daten abspeichern willst, geh das zwar auch aber besser wäre es wenn Du ungefähr so arbeiten würdest:
Delphi-Quellcode:
Aber wo bleiben dann die Spielergebnise?
[Mannschaft1]
Name=xxxx .... [Mannschaft2] Name=yyyyy ..... Dafür wäre eine Matrix eine ganz vernünftige Struktur. Du müßtest also zwei Arten von Daten abspeichern, die Manschaften und die Kombination (Spiele) der Manschaften. Da kommst du mit INI-Files nicht weit. (Ok,OK, wenn man sich anstrengt geht das auch.) Mach Dir erst einmal hierzu ein paar Gedanken, und dann sehen wir weiter. Gruß K-H [edit] ich laß es, alle schreiben schneller als ich![/edit] |
Re: Hilfe bei Algorithmus. EM-Gruppen Platz Berechnung
Die Werte der Edit´s würde ich in eine Klasse laden, wie Luckie schon gesagt hat.
Delphi-Quellcode:
Die Var. Platz kannst Du vorher an Hand der Tore und Punkte Berechnen.
type
TOManschaften = class private Manschaft : string[20]; Spiele : integer; Toreerzielt : integer; Torebekommen: integer; Punkte : integer; end; type TOPlatz = class private Manschaft : string[20]; Platz : integer; end; So in der Art könntest Du zumindest die Klassen aufbauen. [EDIT]Und da war ich noch langsamer[/EDIT] Gruß Jens |
Re: Hilfe bei Algorithmus. EM-Gruppen Platz Berechnung
also die Spielergebnisse werden auch in der ini Datei gespeichert.
Und neu anfangen wollt ich jetzt eigentlich nicht. |
Re: Hilfe bei Algorithmus. EM-Gruppen Platz Berechnung
Mal ne Frage.
Welche Tipps könnt ihr mir geben, wenn ich neu anfangen würde??? Oder: Was wäre die beste Methode dafür??? |
Re: Hilfe bei Algorithmus. EM-Gruppen Platz Berechnung
Haben wir doch schon. Eine Klasse für die Mannschaft, die du dann in einer Containerklasse verwaltest. Diese Containerklasse kann dann auch das Berechnen der Tabellen übernehmen. Dann noch eine Klasse fürs Laden und Speichern. Wobei eine eigene Klasse zum Laden und Speichern nicht zwingend ist. Das wäre dann Ansichtssache.
|
Re: Hilfe bei Algorithmus. EM-Gruppen Platz Berechnung
Ich hab jetzt folgendes Problem.
Ich hab noch nie mit ner eigenen Klasse gearbeitet. |
Re: Hilfe bei Algorithmus. EM-Gruppen Platz Berechnung
Auch da haben wir was:
![]() |
Re: Hilfe bei Algorithmus. EM-Gruppen Platz Berechnung
Wenn Du von vorne wieder Anfang willst, würde ich vieleicht auch mal das Thema Datenbank anschneiden. Vieleicht hast Du ja damit schon mal gearbeitet. Das Speichern und Laden wäre dann einfacher und schöner.
Gruß Jens |
Re: Hilfe bei Algorithmus. EM-Gruppen Platz Berechnung
Welche Datenbank würde sich dafür lohnen???
|
Re: Hilfe bei Algorithmus. EM-Gruppen Platz Berechnung
Hi!
Es gibt unzählige Threads zum Thema "Welche Datenbank" - bitte benutze die Suche. Wenn diese Frage jetzt auch hier erörtert würde, würde es hier drunter und drüber gehen. Grüße, Frederic |
Re: Hilfe bei Algorithmus. EM-Gruppen Platz Berechnung
Zitat:
Gruß Jens |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz