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 }