Enoncé précédent Enoncé suivant

 

 C15. Vecteurs - Programmation PASCAL Corrigé 

Exercice 1 : gestion des polynômes

Supposons que nous voulions manipuler des polynômes de la forme :

P(x)= c1xe1 + c2xe2+ .. + cnxen (1)

avec a) e1 > e2 .. > en

b) n<=20

c1, c2, .. cn sont des réels

e1, e2, .. en sont des entiers compris entre 0 et 19.

Un tel polynôme peut être représenté par une structure dont le premier élément indique le nombre de termes non nuls et dont le second élément est un tableau à deux dimensions o� chaque ligne représente le couple (ci, ei).

Ecrire les modules suivants :

Point(P, V) : fonction qui rend la valeur P(V)

Somme(P, Q, R) : somme des polynômes P et Q; résultat dans R.

Produit(P, Q, R) : produit des polynômes P et Q; résultat dans R.

Dérivé(P, V) : dérivé du polynôme P; résultat dans R.

Ecrire une procédure PASCAL qui imprime le polynôme P sous la forme (1).

NB. On définira le type polynôme comme suit :

    TYPE Polynome = STRUCTURE

            Nbr : ENTIER { Nombre d'éléments non nuls }

            Tab : TABLEAU[40, 2] DE REEL { Les monômes }

    FIN

 

Exercice 2 : Accès par fonction

On a défini sur les vecteurs deux types d'accès :

- l'accès séquentiel

- l'accès dichotomique

Si l'on veut faire de l'accès séquentiel, on construit le vecteur de telle sorte que l'ordre des éléments est quelconque. Par contre, si on veut faire de l'accès dichotomique l'ordre des éléments est imposé.

On peut envisager un autre type d'accès que l'on définit comme suit :

Soit à construire un vecteur V à partir d'une liste de N valeurs V1,V2,.. Vn. On définit une fonction F qui à toute valeur Vi attribue un entier compris entre 1 et N. L'élément Vi est alors rangé à la place F(Vi). Comme on ne peut dans la pratique trouver une fonction F qui attribue une valeur différente à chaque élément de V, il se peut que l'on ait :

F(Vi) = F(Vj) = F(Vk)= . . = F(Vt)

Dans ce cas

- l'élément Vi sera rangé dans le vecteur à la position F(Vi)

- les autres Vj, Vk, .. , Vt seront rangés dans un vecteur V' de telle sorte qu'ils soient liés entre eux comme le montre la figure ci-dessous :

F(V) = (V + 5) Mod N + 1

N = 10

Valeurs : 6, 12, 10, 9, 8, 7, 16, 2, 3, 0, 5, 26, 32.

L'élément 10 est rangé à la place 6 car F(10) = 6

Dans l'exemple on a F(6) = F(16) = F(26) = 2; le premier élément 6 est rangé à la place 2 et est lié au second élément 16 par l'indice 1; 16 et 26 sont rangés dans V' et sont liés entre eux par l'indice 4.; l'élément 7 est rangé dans V à la position 3; il n'est lié à aucun élément.

 

Exercice 3 : Tri de couleurs

Soit un vecteur de N éléments contenant 3 types de couleurs : vert(V), rouge(R) et blanc(B) . Ecrire un algorithme qui ordonne les couleurs comme suit :

RRR... BBBBB... VVVVV