TD-Prog Entiers longs

Préambule

Le but de ce travail est de permettre d'effectuer des calculs sur des nombres entiers longs, c'est à dire susceptibles de s'écrire avec plusieurs centaines de chiffres.

Les entiers longs seront représentés par des tableaux de chiffres.

Définissons d'abord le nombre maximal de chiffres que pourra contenir un entier long :

 Const nMax=255;

Définissons le type Entier qui représentera un entier long :

Type Entier=record
 taille: Integer;                  {nombre de chiffres}
 chiffres: array[1..nMax] of Byte; {tableau de chiffres}
 end;

Affichage et lecture

  1. Ecrire la procédure afficher(e:Entier) qui affiche l'entier e ou "Erreur" si le champ taille est inférieur ou égal à 0.
  2. Le tableau de chiffres représentant un entier long ne devra pas commencer par le chiffre 0, sauf pour le nombre 0 lui-même. Ecrire la procédure normaliser(var e:Entier) qui supprime les 0 superflus qui se trouvent au début du tableau de chiffres représentant l'entier e.
  3. Ecrire la procédure lire(var e:Entier) qui permet à l'utilisateur d'entrer un entier long.
  4. Ecrire la procédure convertir(n:LongInt; var e:Entier) qui permet de convertir un entier de type LongInt en entier long.
  5. Vérification par un programme de test.

Comparaison et opérations

  1. Ecrire la fonction compare(e1,e2:Entier):Integer qui renvoie :
      1 si e1 > e2,
     -1 si e1 < e2
      0 si e1 = e2.
  2. Ecrire la procédure addition(e1,e2:Entier; var e:Entier) qui place dans l'entier e la somme des entiers e1 et e2.
  3. Ecrire la procédure multB(var e:Entier; b:Byte) qui multiplie e par le chiffre contenu dans b, puis l'utiliser pour écrire la procédure multiplication(e1,e2:Entier; var e:Entier) qui fournit le produit de e1 et e2 dans e.

Applications

  1. Pour pouvoir utiliser facilement le travail précédent nous pouvons l'enregistrer dans une unité uentier1.pas.
    Il suffira ensuite d'écrire uses uentier1; pour pouvoir utiliser le type Entier et les différentes procédures et fonctions déjà construites.
  2. Ecrire un programme calculant le nième terme de la suite de Fibonacci définie par : u1 = u2 = 1 et pour n>2, un = un-1 + un-2.
  3. Ecrire un programme calculant la factorielle d'un entier naturel.
  4. Ecrire un programme calculant xy pour x et y entiers naturels.


Correction
Retour