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.
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]