home *** CD-ROM | disk | FTP | other *** search
- Unit Sorting;
- interface
-
- function JeMensi(param1,param2: string): boolean;
-
- {(-13,50,-12,50,50,50,-12,-12,-13,-13,50,50,-13,-12,-12,50,}
-
- implementation
- uses outstr;
- var ret1,ret2: string;
- const z: array [32..169] of integer =
- (-11,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,
- -10,-9,-8,-7,-6,-5,-4,-3,-2,-1,50,50,50,50,50,50,14,1,3,4,6,
- 8,11,12,13,15,17,18,19,20,21,23,25,26,27,29,31,33,36,37,38,
- 39,41,50,50,50,50,-12,50,50,50,50,50,50,50,50,50,50,50,50,50,
- 50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,5,
- 50,50,50,50,7,50,50,50,10,50,16,50,50,50,2,9,50,42,50,50,24,
- 50,33,33,50,50,30,50,40,28,32,50,50,50,50,50,22,33,50,50,0);
-
- function FilterCh(S: string): string;
- var p: integer;
- W: string;
- begin
- W:='';
- W:=UpString(s);
- W[0]:=s[0];
- if DetectString('CH',W) then
- begin
- p:=0;
- repeat
- p:=FindString('CH',W,p);
- if p>0 then
- begin
- delete(W,p,2);
- insert('@',W,p);
- end;
- until DetectString('CH',W)=false;
- end;
- FilterCh:=W;
- end;
-
- procedure Apostrof(Var S: string);
- var I: integer;
- w: string;
- begin
- w:='';
- for I:=1 to Length(s) do
- begin
- if (s[i]='''') or (s[i]=' ') or (s[i]='.') or (s[i]=',')
- or (s[i]='-') or (s[i]='"') or (s[i]='!') or (s[i]='?')
- then else w:=w+s[i];
-
- if (s[i]='.') or (s[i]=',')
- or (s[i]='-') or (s[i]='"') or (s[i]='!') or (s[i]='?')
- then
- begin
- delete(w,length(w),1);
- w:=w+#169;
- end
- else
- if s[i]=' ' then begin delete(w,length(w),1); w:=w+#168; end;
-
- end;
- w[0]:=s[0];
- S:=W;
- end;
-
- function orl(znak: char): integer;
- begin
- orl:=z[ord(znak)];
- end;
-
- function JeMensi(Param1,Param2: string): boolean;
- var w1, w2: string;
- p,I: integer;
- q: integer;
- b: boolean;
-
- procedure DoplnMez(Var S: String; pocet: integer);
- var I: Integer;
- begin
- for I:=Length(S) to pocet-1 do
- begin
- s:=s+' ';
- end;
- end;
-
- begin
-
- w1:=FilterCh(Param1);
- w2:=FilterCh(Param2);
- { Apostrof(w1);
- Apostrof(w2); }
-
- if Length(param1)>Length(param2) then P:=Length(param2)
- else p:=Length(param1);
-
- i:=1;
-
- repeat
- if orl(w1[i])<>orl(w2[i]) then
- begin
- if orl(w1[i])<orl(w2[i]) then
- begin
- JeMensi:=true;
- exit;
- end
- else begin JeMensi:=false; exit; end;
- inc(i);
- end
- else inc(i);
-
- until (orl(w1[i-1])<>orl(w2[i-1])) or (i=p);
-
-
- b:=true;
-
- for Q:=1 to p do
- begin
- b:=b and (orl(w1[q])=orl(w2[q]));
- end;
-
- if b then
- begin
- if length(param1)<length(param2) then JeMensi:=true else
- JeMensi:=false;
- end;
- end;
-
- begin
- ret1:='';
- ret2:='';
- end.
-
- (*
-
- BEGIN
- repeat
-
- writeln(' Zadej retezec 1: ');
- readln(ret1);
-
- writeln(' Zadej retezec 2: ');
- readln(ret2);
-
- writeln(FilterCh(ret1));
- writeln(FilterCh(ret2));
-
- Writeln(JeMensi(ret1,ret2));
-
- until ret2='konec';
- END.
- *)