TP n°5 d'informatique  DEUG S1 MIAS+MASS  2000-2001
variables indicées

EXERCICE 1
    La déclaration  S : string[70]  équivaut à la déclaration  S : array[0..70] of char  pour la gestion des variables en mémoire (mais PAS pour les ordres read ou write !)

    - le nombre exact de caractères de la chaîne S est stocké sous forme de char dans S[0] et s'obtient par length(S).

    - le i-ième caractère de s s'obtient par S[i].

    Ecrire un programme qui lise une chaîne, puis qui au choix :

    1-  affiche la chaîne verticalement
    2 - affiche la chaîne horizontalement et à l'envers.
    3 - calcule le nombre d'apparitions dans la chaîne d'une lettre choisie par l'utilisateur.
    4 - teste si la chaîne est un palindrome (identique à l'envers et à l'endroit : exemple radar).

    Prévoir la possibilité de changer de chaîne sans sortir du programme.

EXERCICE 2
    Ecrire un programme qui lise un tableau d'entiers à un indice ou les tire au hasard entre 0 et 10 (la fonction random(n) avec n entiers retourne un entire tiré au hasard entre 0 et n-1) puis qui affiche au choix de l'utilisateur :
    1 - la moyenne des éléments du tableau.
    2 - la liste des éléments pairs avec leurs indices.
    2 - la liste des éléments multiples de 3.
    4 - la maximum et le minimum du tableau et tous les indices pour lesquels ils sont atteints.

    Prévoir la possibilité de changer de tableau sans sortir du programme.

EXERCICE 3    Edition d'une facture

    On suppose que l enom de chaque produit, son prix et le taux de TVA qui lui est applicable sont lus dans un fichier et sont mémorisés dans des tableaux appropriés. La partie de programme PASCAL réalisant cette tâche vous est fournie ci-dessous :

program EditFacture ;
const nm = 10 ;
var nom : array[1..nm] of string[20] ;
    prixunit, tauxtva : array[1..nm] of real ;
    i : iinteger ;
    f : text ;
begin
(* lecture des tableaux prixunit, tauxtva, nom sur le fichier A:PRODUIT.DOC *)
assign(f,'a:produit.doc') ;
reset(f);
for i:=1 to nm do readln(f,prixunit[i],tauxtva[i],nom[i]) ;
close(f) ;

    Il suffit pour pouvoir l'utiliser de créer sur votre diskette un fichier PRODUIT.DOC de l a forme suivante :

 12.35  8.75 chaussettes
115.24 18.5  chemises
350.62 18.5  pantalons
 22.78  8.75 mouchoirs
 45.63 15.5  cravates
456.36 18.5  vestes
 50.26  8.75 slip
 75.41 15.5 tee-shirt
102.56 15.5  chapeaux
250.65 15.5  pulls

    Compléter le programme précédent de sorte qu'il suffise à l'opérateur de taper les numéros des produits concernés et les quantités achetées pour établir la facture. Cette dernière aura la forme suivante ou les nombres entre les flèches désignent le nombre de caractères de chaque colonne :

<--6-><--------20--------><------15-----><--6-><------15-----><------15----->

  CODE             ARTICLE             PU   QTE           PRIX            TVA
    19            chapeaux         102.56     2         205.12          31.79
     4           mouchoirs          22.78    10         227.80          19.93
                       ...
                       ...
                                          TOTAL         432.92          51.72

                                                      TOTAL DU         484.64