FPC Simplesort Hogyan kell rendezni recordokat simplesorttal? Pl. dátum szerint
1. Felkutatod a simplesort algoritmust
2. Lekódolod Pascalban úgy, hogy:
2.1. Az összehasonlítást a rekordokban levő dátum mezőn végzed
2.2. A cseréléskor magát a rekordot cseréled meg a tömbben
A 2. ponthoz mit kell tudnod Pascal-ból:
- ciklusok
- elágazások
- értékadás
- rekordok használata
- esetleg dátumok összehasonlítása, ez már attól függ, hogyan reprezentáltad a dátumot
A rekordokat .txt fájlból olvasom be a dátumot pedig stringkén olvasom be. A dátum ilyen formában van pl. 2013.01.22.
for i:=2 to n do begin
if a[i].datum<a[i-1].datum then begin
x:= a[i].datum;
j:=i;
repeat
dec(j);
a[j+1] or (x>=a[j-1]);
a[j]:=x;
end;
A gond az hogy 2 string-et nem lehet osszehasonlítani hogy melyik a nagyobb.
for i:=2 to n do begin
if a[i].datum<a[i-1].datum then begin
x:= a[i].datum;
j:=i;
repeat
dec(j);
a[j+1]:=a[j];
until (j=1) or (x>=j-1);
a[j]:=x;
end;
itt tartok most,de igy sem mukodik
#1 vagyok
#4:
Az algoritmust (ciklusfeltételek) nem ellenőriztem, de az szemet szúrt, hogy a 2.2.-es pontomat nem sikerült kivitelezned. 2 sort emelek ki a kódodból:
x:= a[i].datum; // letárolod csak a dátumot
// ...
a[j]:=x; // a tömbbe, egy rekord helyére akarod berakni
Az egyik sor rossz.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!