EXERCICES CORRIGÉS EN ALGORITHMIQUE : LES TABLEAUX
Cliquer au dessous pour le téléchargement
Exercice 1 :
Ecrire un algorithme permettant d’entrer cinq valeurs réelles au clavier,les stocker dans un tableau, calculer leur somme et les afficher avec leur somme à l’ecran.
Correction exercice 1 :
Algorithme tableau_somme;
Var
V : tableau [1..5] de réels ;
S : réel ;
i :entier;
Debut
(*lecture des élements du tableau*)
Pour i <-- 1 à 5 faire
Ecrire(‘entrer l’element N° ’,i);
Lire(V[i]) ;
Finpour i
(*calcul de la somme des élements du tableau *)
S <-- 0 ;
Pour i <-- 1 à 5 faire
S <-- S + V[i] ;
Finpour i
(*afficher des éléments du tableau *)
Pour i <-- 1 à 5 faire
Ecrire(‘l’’element N° ’,i,’est : ‘,V[i]);
Finpour i
Ecrire(‘la somme des éléments du tableau est :‘,S) ;
fin
Exercice 2 :
Ecrire un algorithme permettant de saisir et d’afficher N éléments d’un tableau.
Correction exercice 2 :
Algorithme saisie_affichage;
Var
T : tableau [1..100] de réels ;
N,i : réel ;
Debut
Ecrire(‘entrer le nombre d’éléments du tableau :’) ;
Lire(N) ;
(*lecture des élements du tableau*)
Pour i <-- 1 à N faire
Ecrire(‘entrer l’element N° ’,i);
Lire(T[i]) ;
Finpour i
(*afficher des éléments du tableau *)
Pour i <-- 1 à N faire
Ecrire(‘l’’element T[’,i,’] est : ‘,T[i]);
Finpour i
Fin
Exercice 3 :
Ecrire un algorithme permettant de calculer la somme,produit et moyenne des éléments d’un tableau.
Correction exercice 3 :
Algorithme somme_produit_moyenne;
Var
T : tableau [1..100] de réels ;
N,i : entiers ;
S,P,M : réels ;
Debut
Si N=0 alors
Ecrire(‘le tableau est vide ‘) ;
Sinon
S <-- 0 ;
P <-- 1 ;
Pour i <-- 1 à N faire
S <-- S+T[i] ;
P <-- P * T[i] ;
Finpour i
M <-- S/N ;
Ecrire(‘la somme des éléments du tableau est : ‘,S);
Ecrire(‘le produit des éléments du tableau est : ‘,P);
Ecrire(‘la moyenne des éléments du tableau est : ‘,M);
Finsi
Fin
Exercice 4 :
Ecrire un algorithme permettant de consulter un élément d’un tableau.
Correction exercice 4 :
Algorithme consultation;
Var
T : tableau [1..100] de réels ;
N,P : entiers ;
Debut
Si N=0 alors
Ecrire(‘le tableau est vide ‘) ;
Sinon
Ecrire(‘entrer l’’indice de l’’élément à consulter :’) ;
Lire(P) ;
Si (P<1) ou (P>N) alors
Ecrire(‘Position hors limites du tableau ‘)
Sinon
Ecrire(‘l’’élément à consulter est :’,T[P]) ;
Finsi
Finsi
Fin
Exercice 5 :
Ecrire un algorithme permettant de chercher toutes les occurrences d’un élément dans un tableau.
Correction exercice 5 :
Algorithme recherche_toutes_occurences ;
Var
T : tableau [1..100] de réels ;
N,i : entiers ;
X : réel ;
Existe : booléen ;
Debut
Si N=0 alors
Ecrire(‘le tableau est vide ‘) ;
Sinon
Ecrire(‘entrer la valeur de l’’élément à chercher :’) ;
Lire(X) ;
Existe <-- Faux ;
Pour i <-- 1 à N Faire
Si T[i] = X alors
Existe <-- Vrai ;
Ecrire(‘l’’élément à chercher apparait à la position : ‘,i) ;
Finsi
Finpour i
Si Existe = Faux alors
Ecrire(‘l’’élément n’’apparait pas dans ce tableau ‘) ;
Finsi
Finsi
Fin
Exercice 6 :
Ecrire un algorithme permettant de chercher la première occurrence d’un élément dans un tableau.
Correction exercice 6 :
Algorithme recherche_première_occurence ;
Var
T : tableau [1..100] de réels ;
P, N,i : entiers ;
X : réel ;
Existe : booléen ;
Debut
Si N=0 alors
Ecrire(‘le tableau est vide ‘) ;
Sinon
Ecrire(‘entrer la valeur de l’’élément à chercher :’) ;
Lire(X) ;
Existe <-- Faux ;
i <-- 1 ;
tantque (i<=N) et (Existe=Faux) Faire
Si T[i] = X alors
Existe <-- Vrai ;
P<-- i ;
Sinon
i ßi+1 ;
Finsi
Fintantque
Si Existe = vrai alors
Ecrire(‘la première occurrence de l’élément dans ce tableau est :’,P) ;
Sinon
Ecrire(‘l’’élément n’’apparait pas dans ce tableau ‘) ;
Finsi
Finsi
Fin
Exercice 7 :
Ecrire un algorithme permettant de chercher la dernière occurrence d’un élément dans un tableau.
Correction exercice 7 :
Algorithme recherche_derniere_occurence ;
Var
T : tableau [1..100] de réels ;
P, N,i : entiers ;
X : réel ;
Existe : booléen ;
Debut
Si N=0 alors
Ecrire(‘le tableau est vide ‘) ;
Sinon
Ecrire(‘entrer la valeur de l’’élément à chercher :’) ;
Lire(X) ;
Existe <-- Faux ;
i <-- N ;
tantque (i>=1) et (Existe=Faux) Faire
Si T[i] = X alors
Existe <-- Vrai ;
P<-- i ;
Sinon
i <-- i-1 ;
Finsi
Fintantque
Si Existe = vrai alors
Ecrire(‘la dernière occurrence de l’élément dans ce tableau est :’,P) ;
Sinon
Ecrire(‘l’’élément n’’apparait pas dans ce tableau ‘) ;
Finsi
Finsi
Fin
Exercice 8 :
Ecrire un algorithme permettant de calculer le nombre de fois pour lesquelles un élément apparait dans un tableau.
Correction exercice 8 :
Algorithme frequence;
Var
T : tableau [1..100] de réels ;
N,i,F : entiers ;
X : réel ;
Debut
Si N=0 alors
Ecrire(‘le tableau est vide ‘) ;
Sinon
Ecrire(‘entrer la valeur de l’’élément à chercher :’) ;
Lire(X) ;
F <-- 0 ;
Pour i <-- 1 à N Faire
Si T[i] = X alors
F <-- F+1 ;
Finsi
Finpour i
Ecrire(‘l’’élément apparait : ‘, F,’fois dans ce tableau ‘) ;
Finsi
Fin
Exercice 9 :
Ecrire un algorithme permettant d’ajouter un élément a la fin d’un tableau.
Correction exercice 9 :
Algorithme Ajout;
Var
T : tableau [1..100] de réels ;
N : entiers ;
X : réel ;
Rep : caractère ;
Debut
Ecrire(‘entrer la valeur de l’’élément à ajouter :’) ;
Lire(X) ;
Ecrire(‘Confirmer l’ajout (O/N) :’) ;
Lire(Rep) ;
Si Rep =’O’ alors (*la valeur ‘o’ pour ‘oui’ ! et ‘N’ pour ‘Non’ *)
N<-- N+1 ;(* il y aura un élément en plus *)
T[N] <-- X ;
Finsi
Fin
Exercice 10 :
Ecrire un algorithme permettant de modifier un élément dans un tableau.
Correction exercice 10 :
Algorithme Modification;
Var
T : tableau [1..100] de réels ;
N ,P: entiers ;
X : réel ;
Rep : caractère ;
Debut
Si N=0 alors
Ecrire(‘le tableau est vide ‘) ;
Sinon
Ecrire(‘entrer l’indice de l’’élément à modifier :’) ;
Lire(P) ;
Si (P<1) ou (P>N) alors
Ecrire(‘Position hors limites du tableau ‘)
Sinon
Ecrire(‘L’ancienne valeur dans cette position est :’,T[p]) ;
Ecrire(‘Entrer la nouvelle valeur :’) ;
Lire(X) ;
Ecrire(‘Confirmer la modification (O/N) ‘) ;
Lire(Rep) ;
Si Rep=’O’ Alors
T[P]<-- X ;
Finsi
Finsi
Finsi
Fin
Exercice 11 :
Ecrire un algorithme permettant d’insérer un élément dans un tableau (au début , au milieu ou à la fin).
Correction exercice 11 :
Algorithme insertion;
Var
T : tableau [1..100] de réels ;
N ,P,i: entiers ;
X : réel ;
Rep : caractère ;
Debut
Si N=0 alors
Ecrire(‘le tableau est vide ‘) ;
Sinon
Ecrire(‘entrer la valeur de l’’élément à insérer :’) ;
Lire(X) ;
Ecrire(‘ Entrer la position d’insertion :’) ;
Lire(P) ;
Si (P<1) ou (P>N) alors
Ecrire(‘Position hors limites du tableau ‘)
Sinon
Ecrire(‘Confirmer l’insertion (O/N) ‘) ;
Lire(Rep) ;
Si Rep=’O’ Alors
N <-- N+1 ;
Pour i <-- N à P+1 Faire
T[i] <-- T[i-1] ;
Finpour i
T[P]<-- X ;
Finsi
Finsi
Finsi
Fin
Exercice 12 :
Ecrire un algorithme permettant de supprimer un élément dans un tableau.
Correction exercice 12 :
Algorithme suppression;
Var
T : tableau [1..100] de réels ;
N ,P,i: entiers ;
Rep : caractère ;
Debut
Si N=0 alors
Ecrire(‘le tableau est vide ‘) ;
Sinon
Ecrire(‘entrer l’indice de l’’élément à supprimer :’) ;
Lire(P) ;
Si (P<1) ou (P>N) alors
Ecrire(‘Position hors limites du tableau ‘)
Sinon
Ecrire(‘la valeur dans cette position est :‘,T[P]) ;
Ecrire(‘Confirmer la suppression (O/N) ‘) ;
Lire(Rep) ;
Si Rep=’O’ Alors
N <-- N+1 ;
Pour i <-- P à N-1 Faire
T[i] <-- T[i+1] ;
Finpour i
N <-- N-1; (*il y aura un élément en moins*)
Finsi
Finsi
Finsi
Fin
Exercice 13 :
Ecrire un algorithme permettant de trier par ordre croissant les éléments d’un tableau.
Correction exercice 13 :
Algorithme tri_Croissant;
Var
T : tableau [1..100] de réels ;
N ,i,j: entiers ;
Aux: réel ;
Debut
Si N=0 alors
Ecrire(‘le tableau est vide ‘) ;
Sinon
Pour i <-- 1 à N-1 Faire
Pour j <-- i+1 à N Faire
Si T[i] > T[j] alors
Aux <-- T[i] ;
T[i] <-- T[j] ;
T[j] <-- Aux ;
Finsi
Finpour j
Finpour i
Finsi
Fin
Exercice 14 :
Ecrire un algorithme permettant de trier par ordre décroissant les éléments d’un tableau.
Correction exercice 14 :
Algorithme tri_Décroissant;
Var
T : tableau [1..100] de réels ;
N ,i,j: entiers ;
Aux: réel ;
Debut
Si N=0 alors
Ecrire(‘le tableau est vide ‘) ;
Sinon
Pour i <-- 1 à N-1 Faire
Pour j <-- i+1 à N Faire
Si T[i] < T[j] alors
Aux <-- T[i] ;
T[i] <-- T[j] ;
T[j] <-- Aux ;
Finsi
Finpour j
Finpour i
Finsi
Fin
Exercice 15 :
Ecrire un algorithme permettant de fusionner les éléments de deux tableaux T1 et T2 dans un autre tableau T.
N.B :
N : nombre des éléments du tableau T1
M : nombre des éléments du tableau T2
Correction exercice 15 :
Algorithme fusion_deux_tableaux;
Var
T1,T2 : tableau [1..100] de réels ;
T : tableau [1..200] de réels ;
N ,M,i: entiers ;
Debut
Si (N=0) et (M=0) alors
Ecrire(‘le tableau est vide ‘) ;
Sinon
Pour i <-- 1 à N Faire
T[i] <-- T1[i] ;
Finpour i
Pour i <-- 1 à M Faire
T[N+i] <-- T2[i] ;
Finpour i
Finsi
Fin
Exercice 16 :
Ecrire un algorithme permettant de saisir les données d’un tableau à deux dimensions (10,4), de faire leur somme, produit et moyenne et de les afficher avec les résultats de calcul à l’écran.
Correction exercice 16 :
Algorithme tableau_deux_dimension;
Var
T : tableau [1..10,1..4] de réels ;
I,j: entiers ;
S,P,M : réels ;
Debut
(*saisie des éléments du tableau *)
Pour i <-- 1 à 10 Faire
Pour j<-- 1 à 4 Faire
Ecrire(‘entrer l’’element T[‘,i,’,’,j,’] :’;
Lire(T[i,j]) ;
Finpour j;
Finpour i
(*calcul de la somme ,produit et moyenne *)
S <-- 0 ;
P <-- 1 ;
Pour i <-- 1 à 10 Faire
Pour j<-- 1 à 4 Faire
S <-- S+T[i,j] ;
P <-- P + T[i,j] ;
Finpour j;
Finpour i
M <-- S/40 ; (*40 : nombre d’élément du tableau = 10x4 *)
(* Affichage des éléments du tableau et des résultats *)
Pour i <-- 1 à 10 Faire
Pour j<-- 1 à 4 Faire
Ecrire(‘l’’élément T[‘,i,’,’,j,’] = ‘, T[i,j]);
Finpour j;
Finpour i
Ecrire(‘la somme des éléments du tableau est :’,S) ;
Ecrire(‘le produit des éléments du tableau est :’,P) ;
Ecrire(‘la moyenne des éléments du tableau est :’,M) ;
Fin
Exercice 17 :
Ecrire un algorithme qui calcule la somme des éléments de la diagonale d’une matrice carrée M(n,n) donnée.
Correction exercice 17:
Algorithme diagonale_de_matrice;
Const
N=8 ;
Var
M : tableau [1..8,1..8] d’entiers;
i,j: entiers ;
Sdiag: entiers;
Debut
(*saisie des éléments de la matrice*)
Pour i <-- 1 à n Faire
Pour j<-- 1 à n Faire
Ecrire(‘entrer l’’element M[‘,i,’,’,j,’] :’;
Lire(M[i,j]) ;
Finpour j;
Finpour i
(*calcul de la somme des éléments de la diagonale *)
Sdiag <-- 0 ;
Pour i <-- 1 à n Faire
Sdiag <-- Sdiag +M[i,j] ;
Finpour i
Ecrire(‘la somme des éléments de la diagonale est :’,Sdiag) ;
Fin
Exercice 18 :
Ecrire un algorithme permettant d’effectuer le produit des matrices A(n,m) et B(m,p) .
n ,m et p données (par exemple n=4,m=5,p=3 ).
N.B :
Pour pouvoir faire le produit de deux matrices, il faut absolument que le nombre de colonnes
de la première soit égal au nombre de lignes de la deuxième.
Correction exercice 18 :
Algorithme produit_matrices;
Const
n=4;
m=5;
p=3;
Var
A : tableau [1..n,1..p] de réels;
B : tableau [1..p,1..m] de réels;
C : tableau [1..n,1..m] de réels;
i,j: entiers ;
Debut
(*lecture des éléments des deux matrices*)
Pour i <-- 1 à n Faire
Pour j<-- 1 à p Faire
Ecrire(‘entrer l’’element A[‘,i,’,’,j,’] :’);
Lire(A[i,j]) ;
Finpour j;
Finpour i
Pour i <-- 1 à p Faire
Pour j<-- 1 à m Faire
Ecrire(‘entrer l’’element B[‘,i,’,’,j,’] :’);
Lire(B[i,j]) ;
Finpour j;
Finpour i
(*calcul de produit des deux matrices*)
Pour i <-- 1 à n Faire
Pour j<-- 1 à m Faire
C[i,j] <-- 0 ;
Pour k <-- 1 à p faire
C[i,j] <-- C[i,j] + A[i,k] *B[k,j] ;
Finpour k
Finpour j;
Finpour i
(*Affichage de la matrice produit*)
Pour i <-- 1 à n Faire
Pour j<-- 1 à m Faire
Ecrire(‘l’’element C[‘,i,’,’,j,’] =’,C[i,j]);
Finpour j;
Finpour i
Fin
Exercice 19 :
Ecrire un algorithme permettant de construire dans une matrice carrée P et d’afficher le triangle de PASCAL de degré N.
N.B :
On poura utiliser cette relation pour les éléments de triangle de PASCAL :
Pi,j = Pi-1,j-1 + Pi-1,j
Exemple : triangle de pascal de degré 5 :
N=0 - 1
N=1 - 1 1
N=2 - 1 2 1
N=3 - 1 3 3 1
N=4 - 1 4 6 4 1
N=5 - 1 5 10 10 15 1
Correction exercice 19 :
Algorithme triangle_pascal;
Var
P: tableau [1..100,1..100] de réels;
i,j,n: entiers ;
Debut
Ecrire(‘entrer l’ordre du triangle de pascal que vous voulez :’) ;
Lire(n) ;
(*remplissage du triangle de Pascal*)
P[1,1] <-- 1 ;
Pour i <-- 2 à n+1 Faire
P[i,1] <-- 1 ;
Pour j<-- 2 à i-1 Faire
P[i,j] <-- P[i-1,j-1] + P[i-1,j]
Finpour j;
P[i,j] <-- 1 ;
Finpour i
(* affichagedu triangle de Pascal*)
Pour i <-- 1 à n+1 Faire
Pour j<-- 1 à i Faire
Ecrire(P[i,j] ,’ ‘);
Finpour j;
(*retour a la ligne *)
Finpour i
Fin
Ads