{************************************************
                 Hugo Eti‚vant
     http://www.multimania.com/cyberzoide/
      e-mail : cyberzoide@multimania.com
      (pour une aide en Turbo Pascal 7.0)
*************************************************}

Unit Lettres;

INTERFACE

{les fonctions suivantes renvoient un bool‚en TRUE
si la lettre C remplie les conditions}
FUNCTION IsDigit(C:Char):Boolean; {C est un chiffre}
FUNCTION IsLower(C:Char):Boolean; {C est une lettre minuscule}
FUNCTION IsUpper(C:Char):Boolean; {C est une lettre majuscule}
FUNCTION IsAlpha(C:Char):Boolean; {C est une lettre}
FUNCTION IsAlNum(C:Char):Boolean; {C est une lettre ou un chiffre}
FUNCTION IsFunct(C:Char):Boolean; {C est une fonction}
FUNCTION IsOther(C:Char):Boolean; {C n'est ni une lettre, ni un chiffre,
                                   ni une fonction}
{les fonctions suivantes renvoient un nombre entier de type Byte
correspondant au r‚sultat it‚ratif de chaque fonction}
FUNCTION FindF(C:Char; S:String):Byte; {renvoit la position de la premiŠre
      (* FindFirst *)                   occurence du caractŠre C dans la
                                        chaŚne S ou z‚ro si C est absent de S}
FUNCTION FindL(C:Char; S:String):Byte; {renvoit la position de la derniŠre
      (* FindLast *)                    occurence du caractŠre C dans la
                                        chaŚne S ou z‚ro si C est absent de S}
FUNCTION Count(C:Char; S:String):Byte; {compte le nombre d'occurences du
                                        caractŠre C dans la chaŚne S}
PROCEDURE Beep; {signal sonore}


IMPLEMENTATION

function isdigit(c:char):boolean;  {si chiffre}
begin
isdigit:=(ord(c) in [48..57]);
end;

function islower(c:char):boolean;  {si minuscule}
begin
islower:=(c in ['a'..'z']);
end;

function isupper(c:char):boolean;  {si majuscule}
begin
isupper:=(c in ['A'..'Z']);
end;

function isalpha(c:char):boolean;  {si lettre}
begin
isalpha:=(islower(c) or isupper(c));
end;

function isalnum(c:char):boolean;  {si lettre ou chiffre}
begin
isalnum:=(isalpha(c) or isdigit(c));
end;

function isfunct(c:char):boolean;  {si caractŠre fonction}
begin
isfunct:=(ord(c) in [0..27]);
end;

function isother(c:char):boolean;  {si ni lettre, ni chiffre ni fonction}
begin
isother:=not(isalnum(c) or isfunct(c));
end;

function findf(c:char;s:string):byte; {renvoit la position de la premiŠre
                                      occurence du caractŠre C dans la
                                      chaŚne S ou z‚ro si absent}
var i,tmp:byte;
begin
tmp:=0;
for i:=length(s) downto 1 do if c=s[i] then tmp:=i;
findf:=tmp;
end;

function findl(c:char;s:string):byte; {renvoit la position de la derniŠre
                                      occurence du caractŠre C dans la
                                      chaŚne S ou z‚ro si absent}
var i,tmp:byte;
begin
tmp:=0;
for i:=1 to length(s) do if c=s[i] then tmp:=i;
findl:=tmp;
end;

function count(c:char;s:string):byte; {compte le nombre d'occurences du
                                       caractŠre C dans la chaŚne S}
var i,tmp:byte;
begin
tmp:=0;
for i:=1 to length(s) do if c=s[i] then inc(tmp);
count:=tmp;
end;

procedure beep;  { signal sonore ! }
begin
writeln(#7);
end;


BEGIN
END.