AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit dem Sortieren

Ein Thema von Tiny · begonnen am 15. Apr 2004 · letzter Beitrag vom 15. Apr 2004
Antwort Antwort
Seite 1 von 2  1 2      
Tiny

Registriert seit: 15. Apr 2004
Ort: Hobeck
10 Beiträge
 
#1

Problem mit dem Sortieren

  Alt 15. Apr 2004, 16:53
Hi!
Also ich muss für die Schule ein Projekt machen und habe mich für einen ligamanager entschieden. Nun hab ich aber ein Problem, ich möchte mit dem Bubble - Sort sortieren, aber irgendwie klappt dies nicht ganz.
Kuzr zur Erklärung: Es gibt 10 Mannschaften mit maximal 14 Spielern. Diese Spieler sollen nach ihrer erreichten Gesamtpunktzahl sortiert werden (Es gibt eine Auswärts- und Heimpunktzahl). Es muss aber nicht sein, dass ein Spieler ein Auswärts- und ein Heimspiel gemacht hat.

Mein Problem ist, dass er die Spieler nur innerhalb der Mannschaft sortiert und nicht unter allen 10 Mannschaften. Weiterhin werden die Mitglieder, die mit einer Gesamtzahl von 0 dastehen nicht nach unten gesetzt, sondern stehen mittendrin.

Kann mir vielleicht jemand helfen und sagen, was daran falsch ist?


Delphi-Quellcode:
repeat
 teta := true;
 for i := 1 to 139 do
 begin
        t1 := spieler[i].Heimspiele + spieler[i].Auswspiele;
        t2 := spieler[i+1].Heimspiele + spieler[i+1].Auswspiele;
        if (t1 <> 0) and (t2 <> 0) then
                if ((spieler[i].Heimpunkte + spieler[i].Auswpunkte) / t1) < ((spieler[i+1].Heimpunkte + spieler[i+1].Auswpunkte) / t2) then
                begin
                        teta := false;
                        hlp := spieler[i];
                        spieler[i] := spieler[i+1];
                        spieler[i+1] := hlp;
                end
        else
                begin
                        if (t1 = 0 ) and (t2 <> 0) then
                        begin
                                teta := false;
                                hlp := spieler[i];
                                spieler[i] := spieler[i+1];
                                spieler[i+1] := hlp;
                       end;
                end;
 end;
 until teta;


Danke! Gruß Tiny

[edit=sakura] [delphi]-Tags gesetzt. Mfg, sakura[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#2

Re: Problem mit dem Sortieren

  Alt 15. Apr 2004, 17:03
Hallo Tiny,

zunächst erst mal herzlich willkommen in der Delphi-PRAXiS.
Ich kann aus Deinem Quelltext nicht entnehmen, wie Du die Unterscheidung nach Mannschaften durchführst. Es wäre also nicht schlecht, wenn Du auch mal Genaueres zu den Deklarationen von spieler schreiben würdest!
  Mit Zitat antworten Zitat
Tiny

Registriert seit: 15. Apr 2004
Ort: Hobeck
10 Beiträge
 
#3

Re: Problem mit dem Sortieren

  Alt 15. Apr 2004, 17:11
Danke!

OK, es gibt einen Record, der Rangeintrag heisst :

RangEintrag = Record
Mannschaft : integer;
nummer : integer;
Heimpunkte : integer;
Auswpunkte : integer;
Heimspiele : integer;
Auswspiele : integer;

und der Spieler:

spieler : array[1 .. 140] of Rangeintrag;

Ist es das, was du wissen wolltest, reicht das?
Tiny
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: Problem mit dem Sortieren

  Alt 15. Apr 2004, 17:40
Beim Sortieren kommt es drauf an, 2 Dinge zu vergleichen.
Delphi-Quellcode:
procedure CompareRangeintrag(const a, b : RangEintrag):integer;
var
  s1, s2, p1, p2 : integer;
begin
   t1 := a.Heimspiele + a.Auswspiele;
   p1 := a.Heimpunkte + a.Auswpunkte;

   t2 := b.Heimspiele + b.Auswspiele;
   p2 := b.Heimpunkte + b.Auswpunkte;

   if t1 <> 0 then
      p1 := p1 / t1;
   if t2 <> 0 then
      p2 := p2 / t2;

   if p1 > p2 then
      result :=1 // Rang a ist besser als b
   else if p1 < p2 then
      result := -1 // Rang b ist besser als a
   else
      result := 0; // beide gleich (schlecht)
end;
Die 2. Operation beim Sortieren ist es, 2 Dinge zu vertauschen:
Delphi-Quellcode:
procedure SwapRangeintrag(var a, b : RangEintrag);
var
   tmp : Rangeintrag;
begin
   tmp := a;
   a := b;
   b := tmp;
end;
Mit diesen beiden Grundoperationen ist es egal, ob du BubbleSort, Heapsort, Quicksort
oder ein anderes Sortierverfahren verwendest.
Andreas
  Mit Zitat antworten Zitat
Tiny

Registriert seit: 15. Apr 2004
Ort: Hobeck
10 Beiträge
 
#5

Re: Problem mit dem Sortieren

  Alt 15. Apr 2004, 19:29
Ich danke dir!
Hab jetzt keine zeit mehr das umzusetzen, aber ich werd es probieren!
Wie gesagt, vielen Dank, für deine Hilfe!
Bis zu meinem nächsten Problem!
Tiny
  Mit Zitat antworten Zitat
15. Apr 2004, 19:53
Dieses Thema wurde von "Christian Seehase" von "Fragen / Anregungen zur DP" nach "Sonstige Fragen zu Delphi" verschoben.
Ist keine Frage zum Forum
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#7

Re: Problem mit dem Sortieren

  Alt 15. Apr 2004, 20:55
also, trotzdem noch, ich würds so machen:

ich würd das alles in eine zahl tuen
also auswärtspunkte, heimpunkte und so alles verrechnen, und dann das ergebnis sortieren

oder hab ich das problem nicht(/falsch) verstanden?
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Tiny

Registriert seit: 15. Apr 2004
Ort: Hobeck
10 Beiträge
 
#8

Re: Problem mit dem Sortieren

  Alt 15. Apr 2004, 21:12
Nee, du hast das Problem schon richtig verstanden! Ich werds morgen ausprobieren!
Mir fällt da grad noch was ein!

Und zwar bekommt die Mannschaft, die bei einem Spiel gewinnt 2 Punkte, die andere 0, bei unentschieden bekommt jeder einen Punkt. Ich will das auch in einer Tabelle ausgeben. Es gibt aber 18 Spieltage,d..h eine Mannschaft kann, wenn es gut läuft, 18 Spiele gewinnen und hat somit 36 Punkte!

Problem: Wie rechnet er die Punkte (2 oder 0) für die ganzen 18 Spieltage zusammen? Er gibt, wenn überhaupt, nur die Punkte für den ersten Spieltag aus!
Wie macht man das so im allgemeinen?
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#9

Re: Problem mit dem Sortieren

  Alt 15. Apr 2004, 21:19
ähm, ich dachte jetzt es gehtb um die einzelnen spieler, aber egal...

da würd ich sagen: mach
spiele:array [1..14, 1..18] of integer 14=mannschaften
18=spiele

da tust du rein für jedes spiel und jede mannschaft die anzahl an punkten

zB. mannschaft 5 gewinnt spiel 15 gegen mannschaft 7
Delphi-Quellcode:
spiele[5,15]:=2;
spiele[7,15]:=0
und so weiter

und am ende sagst du

for i:=1 to 18 do punktemannschaft1:=punktemannschaft1+spiele[i]; das müsste hinhauen
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#10

Re: Problem mit dem Sortieren

  Alt 15. Apr 2004, 21:21
und dann wie vorher, du hast nen wert, die punkte, und danach musst du die sortieren

dann in härtefällen noch das torverhältnis, aber das kann man erst mal vernachlässigen
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz