Vous êtes sur la page 1sur 5

Alogorithmique 2

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 :")

BEN DAKHLIA S. Page 1


Alogorithmique 2

Pour I de 0 à (N-1) Faire


Ecrire(*(A+I))
Fin pour

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

/* Effacer toutes les occurrences de X et comprimer : */


/* Copier tous les éléments de P1 vers P2 et augmenter*/
/* P2 pour tous les éléments différents de X. */
P2 A
Pour P1 de A à A+N Faire
*P2 *P1
Si *P2<> X alors
P2P2+1
Fin si
Fin pour
/* Nouvelle dimension de A */
N P2-A
/* Edition du résultat */
Pour P1 de A à A+N Faire

BEN DAKHLIA S. Page 2


Alogorithmique 2

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.

Procédure(A :tableau[1..100] d’entier, N :entier, Var Max :*entier,Var Min : *entier)


Début
Var
P1 :*entier
Debut
MaxA
MinA

Pour P1 de (A+1) à A+N Faire


Si *P1>*Max alors
MaxP1
Sinon
Si *P1<*Min alors
MinP1
FinSi
FinSi
Fin pour

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)

BEN DAKHLIA S. Page 3


Alogorithmique 2

Pour P1 de A à A+N Faire


Ecrire("Elément", P1-A, " : ")
Lire(*P1)
Fin pour
/* Affichage du tableau */
Ecrire("Tableau donné A :")
Pour P1 de A à A+(N-1) Faire
Ecrire(*(P1))
Fin pour

/* inverser la tableau */
P1A
P2 A+(N-1)

Tant que P1<P2 Faire


AIDE* (P1)
*(P1)* (P2)
*(P2) AIDE
P1 P1+1
P2 P2-1
Fin Tq

/* 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.

BEN DAKHLIA S. Page 4


Alogorithmique 2

Fonction SousChaine(ch : chainedecaratère, i : entier, j :entier) *chaine de caractere


Var k : entier
Debut

SC: *chaine de caractères


Si i<0 ou j>long(ch) ou j<i alors
SousChaineNULL
Sinon
Pour ( K de 0 à ( j-i+1) faire
SC +k ch+i+k
FinPour
SousChaineSC
FinSi

Fin

BEN DAKHLIA S. Page 5

Vous aimerez peut-être aussi