Unit uentier;
{ procédures et fonction de base pour calculer avec des entiers longs }
INTERFACE
{ on déclare dans cette partie tout ce qui sera utilisable par
d'autres programmes ou unités }
Const
nMax=255; { nombre maximum de chiffres pour un entier }
Type
{ type représentant un entier long }
Entier=record
taille : Integer;
{ nombre de chiffres; l'entier n'est pas valide si 0 }
chiffres : array[1..nMax] of Byte;
{ sauf pour 0 le premier chiffre est toujours différent de 0 }
end;
Procedure Normalise(var e:Entier);
{ supprime les éventuels 0 du début du tableau de chiffres }
Procedure FaireEntier(S:String; var e:Entier);
{ transforme la chaine de caractères S en un entier e }
Procedure Convertir(n:LongInt; var e:Entier);
{ convertit le LongInt n en entier long e }
Procedure Lire(var e:Entier);
{ entrée de l'entier e au clavier }
Procedure Afficher(e:Entier);
{ affichage de l'entier e }
Procedure Hasard(var e:Entier; l:Integer);
{ crée l'entier e au hasard;
si l > 0 avec l chiffres
si l < 0 avec au plus l chiffres }
Function Compare(e1,e2:Entier):Integer;
{ renvoie 1 si e1 > e2, 0 si e1 = e2, -1 si e1 < e2 }
Procedure Permuter(var e1,e2:Entier);
{ remplace e1 par e2 et e2 par e1 }
Procedure Addition(e1,e2:Entier; var e:Entier);
{ renvoie e1+e2 dans e }
Procedure Soustraction(e1,e2:Entier; var e:Entier);
{ renvoie e1-e2 dans e }
Procedure Multiplication(e1,e2:Entier; var e:Entier);
{ renvoie le produit de e1 et e2 dans e }
Procedure Division(e1,e2:Entier; var e,r:Entier);
{ effectue la division euclidienne de e1 par e2, renvoie
le quotient dans e et le reste dans r }
Procedure AddB(var e:Entier; b:Byte);
{ ajoute le chiffre b à e }
Procedure SousB(var e:Entier; b:Byte);
{ Soustrait le chiffre b de e }
Procedure MultB(var e:Entier; b:Byte);
{ multiplie e par le chiffre b }
Procedure DivB(var e:Entier; b:Byte);
{ divise e par le chiffre b }
Procedure Mult10(var e:Entier);
{ multiplie e par 10 }