Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Hilfe bei Algorithmus. EM-Gruppen Platz Berechnung (https://www.delphipraxis.net/146207-hilfe-bei-algorithmus-em-gruppen-platz-berechnung.html)

Muellermilchtrinker 15. Jan 2010 15:28


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:
--------| 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    |        |
--------|--------|--------|--------|--------|
Ich hoffe ihr könnt mir helfen. Danke schonmal.

Jens Hartmann 15. Jan 2010 15:33

Re: Hilfe bei Algorithmus
 
Hallo,

Als erstes würde ich die Punkte vergleichen mit
Delphi-Quellcode:
  if Land1.Punkte > Land2.Punkte then
//usw
Als nächstes musst Du ja die Tordifferenz auf dem selben Weg vergleichen.
Delphi-Quellcode:
  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.
So in der Art müsstest Du vorgehen.

Gruß Jens

fkerber 15. Jan 2010 15:34

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

s.h.a.r.k 15. Jan 2010 15:35

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:

Muellermilchtrinker 15. Jan 2010 15:36

Re: Hilfe bei Algorithmus
 
Code habe ich bis jetzt noch keinen. Ich wollte mal fragen wie ihr vorgehen würdet.

jfheins 15. Jan 2010 15:36

Re: Hilfe bei Algorithmus
 
Zitat:

Zitat von Muellermilchtrinker
Was mache ich wenn die Punkte gleich sind???

http://de.wikipedia.org/wiki/Fußball...0#Gruppenphase

p80286 15. Jan 2010 15:39

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:
TFussballrec= record
  Manschaft  : string[20];
  Spiele     : integer;
  Toreerzielt : integer;
  Torebekommen: integer;
  Punkte     : integer;
end;
Dann noch eine Vergleichsroutine für's Sortieren nach erzielten Punkten, und wer dann auf Liste[0] steht hat die meisten Punkte,
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]

fkerber 15. Jan 2010 15:44

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

Muellermilchtrinker 15. Jan 2010 15:59

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???

fkerber 15. Jan 2010 16:01

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

Muellermilchtrinker 15. Jan 2010 16:05

Re: Hilfe bei Algorithmus. EM-Gruppen Platz Berechnung
 
Die Ergebnisse der Spiele in den Gruppen liegen in Editfelder.
Code:
Land 1  [Edit] : [Edit] Land 2
So ists aufgebaut.

Jens Hartmann 15. Jan 2010 16:10

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:
if StrToInt(Edit1.Text) > StrToInt(Edit2.Text) then
allerdings wäre der Vorschlag aus #7 von..
Zitat:

Zitat von p80286
Die Daten selbst hätte ich in einer Tlist bzw. in zugehörigen Records:
Delphi-Quellcode:
TFussballrec= record
  Manschaft  : string[20];
  Spiele     : integer;
  Toreerzielt : integer;
  Torebekommen: integer;
  Punkte     : integer;
end;

wesentlich sinnvoller. Du müsstes die Daten ja am besten auch irgenwo speichern. Da ja nicht alle Spiele an einem Tag sin. Da würde sich entweder eine Datenbank oder eine XML-Datei anbieten.

Gruß Jens

Muellermilchtrinker 15. Jan 2010 16:13

Re: Hilfe bei Algorithmus. EM-Gruppen Platz Berechnung
 
Die Daten werden gespeichert.
Nur ich habe noch nie mit TList/records gearbeitet.

Jens Hartmann 15. Jan 2010 16:32

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

Muellermilchtrinker 15. Jan 2010 16:34

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.

Jens Hartmann 15. Jan 2010 16:49

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

Muellermilchtrinker 15. Jan 2010 17:00

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:
Land 1  [Edit] : [Edit] Land 2
...
Auf der dritten sind Die Stringgrids.
Die Ergebnisse sehen dann so aus:

Code:
Land 1  [3] : [1] Land 2
Die ganzen Daten in den Editfeldern werden in einer Ini gespeichert die so aussieht:
Code:
[Texte]
Edit1=Land1
Edit2=Land2
...
Sonst werden die Daten nicht im Programm gespeichert. Man muss über die Editfelder an die Daten.

Jens Hartmann 15. Jan 2010 17:22

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

Muellermilchtrinker 15. Jan 2010 17:24

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;

Luckie 15. Jan 2010 17:31

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.

http://www.michael-puff.de/Artikel/C...rKlassen.shtml

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.

p80286 15. Jan 2010 17:41

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:
[Mannschaft1]
Name=xxxx
....
[Mannschaft2]
Name=yyyyy
.....
Aber wo bleiben dann die Spielergebnise?
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]

Jens Hartmann 15. Jan 2010 17:44

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:
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;
Die Var. Platz kannst Du vorher an Hand der Tore und Punkte Berechnen.

So in der Art könntest Du zumindest die Klassen aufbauen.

[EDIT]Und da war ich noch langsamer[/EDIT]

Gruß Jens

Muellermilchtrinker 15. Jan 2010 17:45

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.

Muellermilchtrinker 15. Jan 2010 18:16

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???

Luckie 15. Jan 2010 18:19

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.

Muellermilchtrinker 15. Jan 2010 18:21

Re: Hilfe bei Algorithmus. EM-Gruppen Platz Berechnung
 
Ich hab jetzt folgendes Problem.
Ich hab noch nie mit ner eigenen Klasse gearbeitet.

Luckie 15. Jan 2010 18:23

Re: Hilfe bei Algorithmus. EM-Gruppen Platz Berechnung
 
Auch da haben wir was: http://www.michael-puff.de/index.php...lphi/Tutorials

Jens Hartmann 15. Jan 2010 18:42

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

Muellermilchtrinker 15. Jan 2010 18:52

Re: Hilfe bei Algorithmus. EM-Gruppen Platz Berechnung
 
Welche Datenbank würde sich dafür lohnen???

fkerber 15. Jan 2010 19:32

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

Jens Hartmann 15. Jan 2010 23:12

Re: Hilfe bei Algorithmus. EM-Gruppen Platz Berechnung
 
Zitat:

Zitat von Muellermilchtrinker
Welche Datenbank würde sich dafür lohnen???

Alle die ich Dir genannt habe. Aber Frederic hat es schon gesagt. Das paßt jetzt überhaupt nicht mehr in deinen Thread. Schau dir das bitte erst mal genau an und sag uns dann was Du willst.

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