Siema! Chce napisac gre - manager pilkarki, lecz nie wiem jak mam zrobić tabelę ligową, liste najlepszych strzelców, itd. Prosze o pomoc, jakieś wskazówki, podpowiedzi! Z góry dziękuje! Pozdro
To może napisz co WIESZ jak zrobić, albo raczej co masz zrobione i jak te elementy, które wymieniłeś a nie wiesz jak zrobić mają działać. Bo takie info jakie podałeś, to nic nie mówi.
Właśnie chodzi o to, że nie mam zrobione nic(jeżeli chodzi o te tabele)! Nie wiiem jak sie do tego zabrać! Każda druzyna ma ileś punktów, i problem polega na tym, aby je posortrować, ale znane mi algorytmy sortujące sortuja tylko liczby i nie wiem jak zrobić aby przy odpowiednich punktach stały nazwy drużyn.
ehh jak masz sortwanie np: bąbelkowe to sortujesz według punktów wiec.... albo lepiej to napisze
Type TDruzyna=record
Nazwa:string;
Punkty:integer;
end;
var D:array [1..42] od TDruzyna;
i,j:integer;
Tmp:TDruzyna;
begin
for i:=1 to 42 do
for j:=1 to 42-i do // to nie wiem, czy do tyle ma byc robione ;]
if D[j].Punkty<D[j+1].Punkty then
begin
Tmp:=D[j];
D[j]:=D[j+1];
D[j+1]:=Tmp;
end;
end.
No i powinno być juz posortowane (jeśli sie nie pomylilem w czyms ale ogólną idee rozwiązania juz masz)
A jak masz te tabele zrobione? Może rozważ wykorzystanie jakiejś bazy danych, albo coś. Wtedy ze wszelkimi dziwnymi sortowaniami się nie będziesz musiał bawić. Albo zrób to jakoś z grubsza tak:
Drużyny przedstawione są za pomocą jednowymiarowej tablicy zawierające rekordy typu TDrużyna. Typ TDrużyna może wyglądać tak:
type TDruzyna=record
Nazwa: String;
Punkty: Integer;
{Jakieś tam jeszcze inne potrzebne Ci dane o tej drużynce}
end;
No i sortujesz to zgrubsza tak:
var Druzyny: Array of TDruzyna; //Zakładam, że przed wywołaniem tej procedury ta tablica będzie miała swój odpowiedni rozmiar i wstawione dane, inaczej może się wykrzaczać.
Procedure Sortuj;
var
DruzynaTMP: TDruzyna;
I, J: Integer;
begin
//Zastosuję tu powiedzmy sortowanie bąbelkowe, najprostszy wariant, bo to nie chodzi o super wydajną metodę sortowania tylko o pokazanie idei sortowania całych rekordów.
For I:=Length(Druzyny)-2 downto 0 do begin
For J:=0 to I do begin
If Druzyny[J].Punkty<Druzyny[J+1].Punkty then begin //Sortowanie malejące, zamień < na > a będzie rosnące
DruzynaTMP:=Druzyny[J];
Druzyny[J]:=Druzyny[J+1];
Druzyny[J+1]:=DruzynaTMP;
end;
end;
end;
end;
I tyle. Pisane z pamięci, więc jak coś nie działa, to daj znać.
Wielkie dzięki LukaStrz [!!!] Dokładnie o to mi chodziło :) Dziękuje za konkretną odpowiedź! [browar]
Pozdro [green]
Dzięki, bardzo mi pomogliście! Fajne z was chłopaki :)