Correction TD Pointeur
Correction TD Pointeur
Correction TD Pointeur
ALGORITHMIQUE ET
STRUCTURES DE DONNEES
LES POINTEURS
Exercice 1 :
Ecrire un programme qui lit deux tableaux d'entiers A et B et leurs dimensions N et M au
clavier et ajoute les éléments de B à la fin de A. Utiliser le formalisme pointeur.
Correction
Algorithme Ajoutertab
Variables
A : Tableau[1..100] : entier
B : Tableau[1..50] de
N, M : Entiers /* dimensions des tableaux */
I : Entier
/* Saisie des données */
Ecrire("Dimension du tableau A (max.50) : ")
Lire(N)
Pour I de 1 à N Faire
Ecrire("Elément", I, " : ")
Lire(A[I])
Fin pour
Ecrire("Dimension du tableau B (max.50) : ");Lire(M)
Pour I de 1 à M Faire
Ecrire("Elément", I, " : ")
Lire(B[I])
Fin pour
/* Affichage des tableaux */Ecrire("Tableau donné A :")
Pour I de 0 à (N-1) Faire
Ecrire(*(A+I))
Fin pour
Ecrire("Tableau donné B :")
Pour I de 0 à (M-1) Faire
Ecrire(*(B+I))
Fin pour
/* Copie de B à la fin de A */
Pour I de 0 à (M-1) Faire
*(A+N+I)* (B+I)^
Fin pour
/* Nouvelle dimension de A */
N N+M
/* Edition du résultat */Ecrire("Tableau résultat A :")
Fin
Exercice 2 :
Ecrire un programme qui lit un entier X et un tableau A du type Entier au clavier et élimine
toutes les occurrences de X dans A en tassant les éléments restants. Le programme utilisera
les pointeurs P1 et P2 pour parcourir le tableau.
Algorithme EliminerXdeA
Variables
A : Tableau[1..100] de Entiers
N : Entier /* dimension du tableau */
X : Entier
P1,P2 : *Entier
Début
/* Saisie des données */
Ecrire("Dimension du tableau A (max.100) : ")
Lire(N)
Pour P1 de A à A+N Faire
Ecrire("Elément", P1-A, " : ")
Lire(*P1)
Fin pour
Ecrire("Valeur à supprimer du tableau ")
Lire(X) /* Affichage des tableaux */
Ecrire("Tableau donné A :")
Pour P1 de A à A+N Faire
Ecrire(*(P1))
Fin pour
Ecrire(*(P1));
Fin pour
FIN
Exercice 3 :
Ecrire une procédure qui reçoit comme paramètres un tableau d'entiers et sa taille et retourne
deux pointeurs, l'un vers l'élément contenant la plus petite valeur du tableau, l'autre vers
l'élément contenant la plus grande.
Fin
Exercice 4 :
Ecrire un programme qui range les éléments d'un tableau A du type Entier dans l'ordre
inverse. Le programme utilisera des pointeurs P1 et P2 et une variable numérique AIDE pour
la permutation des éléments.
Algorithme RangeInverse
Types :
Tab : *Entier
Variables
A : Tableau[1..100] de Entiers
N : Entier /* dimension du tableau */
AIDE : Entier
P1,P2 : Tab
Début
/* Saisie des données */
Ecrire("Dimension du tableau A (max.100) : ")
Lire(N)
/* inverser la tableau */
P1A
P2 A+(N-1)
/* Edition du résultat */
Pour P1 de A à A+N Faire
Ecrire(*(P1))
Fin pour
Fin
Exercice 5 :
Ecrire une fonction qui reçoit comme paramètres une chaîne de caractères et deux entiers i et j
et retourne la sous-chaîne de caractères contenant les caractères entre les positions i et j. Si i
est négatif, si j est plus grand que la longueur de la chaîne ou si j < i, la fonction retournera le
pointeur NULL. La chaîne retournée sera allouée dans la fonction.
Fin