[ Passwd @ 07.09.2005. 15:11 ] @
Radim neke zadatke iz pascala i evo sta treba:
iz datoteke c:\ulaz.txt sortirati datume i godine te ih ispisati na ekran..

ulaz.txt:

15.6.1989.
3.2.1222.
1.4.2003.
6.4.1909.
8.2.1111.
....................


program ucita tu datoteku, sortira ju i ispise...:
8.2.1111.
3.2.1222.
6.4.1909.
15.6.1989.
1.4.2003.


Evo moga koda (za koji mislim da je u redu) ali on izbaci rezultat kao da nista nije sortirao...orvo ispise datoteku kakva je , a onda soritanu..



Code:

program sortiranje;
uses crt;
var f:text;
    duz,n,x,y:integer;
    s:array [1..100] of string;
    m1,m2,m3:array [1..10] of string;
    z1,z2,z3:array [1..10] of string;

begin
clrscr;
assign(f,'c:\ulaz.txt');
reset(f);
duz:=0;

while not eof(f) do
begin
inc(duz);
readln(f,s[duz]);
writeln(s[duz]);

n:=pos('.',s[duz]);
m1[duz]:=copy(s[duz],1,n-1);//dani u duz-toj godini iz datoteke
delete(s[duz],1,n);

n:=pos('.',s[duz]);
m2[duz]:=copy(s[duz],1,n-1);//mjeseci u duz-toj godini iz datoteke
delete(s[duz],1,n);

n:=pos('.',s[duz]);
m3[duz]:=copy(s[duz],1,n-1);//godina u duz-toj godini iz datoteke
delete(s[duz],1,n);


end;


for y:=duz-1 downto 1 do
for x:=1 to x do
begin
if m3[x]>m3[x+1] then//soritra godine i zamjenjuje dan, mjesec,godinu sa slijedecom ukoliko je m3[x]>m3[x+1]  (godina x-ta po redu veca od godine x+1 po redu)
   begin
   z1[x]:=m1[x];
   z2[x]:=m2[x];
   z3[x]:=m3[x];

   m1[x]:=m1[x+1];
   m2[x]:=m2[x+1];
   m3[x]:=m3[x+1];

   m1[x+1]:=z1[x];
   m2[x+1]:=z2[x];
   m3[x+1]:=z3[x];
   end;


end;

writeln;
writeln;
writeln;


for x:=1 to duz do
begin
writeln(m1[x],'.',m2[x],'.',m3[x],'.');//ispisuje sortirano....
end;



readln;
end.



Volio bih kada bi na ovom mom kodu uocili "greske", a ne da radite novi kod..


Edit:ako su u datoteci recimo 10 datuma sa istom godinom, nije bitno kako ce biti sortirano..

[Ovu poruku je menjao Passwd dana 07.09.2005. u 16:14 GMT+1]
[ Passwd @ 07.09.2005. 15:18 ] @


Banalan problem..problem je rijesen

Ovdje sam fulao slovo:

Code:

for y:=duz-1 downto 1 do
for x:=1 to x do
begin
......


Naravno, treba:
Code:

for y:=duz-1 downto 1 do
for x:=1 to y do
begin
......


svejedno hvala, poz
[ borovac @ 07.09.2005. 15:24 ] @
Najgore je kada je kod super ali neko usrano slovo zezneš, pa neće i neće. Nadam se da se nisi mučio pronalazeći ovu grešku.
[ Passwd @ 07.09.2005. 17:17 ] @
Pa jedno 10 puta sam program pisao na druge nacine i onda mi je doxizdilo i postavio temu, i bezveze gledam kod i bas to vidim...

Vec kad je taj problem rijesen, dal ima netko ideju kako sortirati i po danima i mjesecima..??
[ Toyo @ 07.09.2005. 20:39 ] @
Svaki datum pretvoris u format: yyyy-mm-dd pa onda sotiras kao obican string. Ako ti treba na kraju vratis u prvobitno stanje.

20.5.1998 = 1998-05-20 itd...