Vous êtes sur la page 1sur 27

TD4- Algorithmique I

Module informatique SMIA-S2


2021-2022

Pr. Er-rajy Latifa


Exercice 1 :
Soit T un tableau à une dimension (vecteur) contenant N nombres entiers
(N≤100). Ecrire les algorithmes pour :
1.Déterminer le minimum, le maximum et la moyenne des éléments d’un
tableau T.
2. Calculer le produit de tous les éléments de T ainsi que le nombre de valeurs
strictement positives.
3. Calculer la somme et le produit scalaire de deux tableaux (T1 et T2).
4. Déterminer les positions de l’apparition d’une valeur dans T.
5. Inverser le contenu de T.
6. Supprimer toutes les valeurs nulles de T.
7. Mettre les valeurs négatives au début et les valeurs positives à la fin en
utilisant un seul tableau.

Pr. Er-rajy Latifa


Exercice 1 :
Soit T un tableau à une dimension (vecteur) contenant N nombres entiers
(N≤100). Ecrire les algorithmes pour :
1.Déterminer le minimum, le maximum et la moyenne des éléments d’un
tableau T.

1- Demander à l’utilisateur de saisir N (N≤100)


2- Récupérer les éléments du tableau.
Pour I de 0 à N-1 Faire
Lire(T[I]) ;
FinPour
3. Déterminer le minimum, le maximum et la moyenne des éléments
d’un tableau T.

Pr. Er-rajy Latifa


Algorithme MinMax ;
Variables Tableau T[100] : entier;
I, N, Max, Min, S : entier;
Moy : réel ;
Début
//lecture de la taille exacte
Répéter
Ecrire(“Donner la taille du tableau N≤100”);
Lire(N) ;
Jusqu’à N>0 et N <= 100 ;
//Lecture des éléments de T
Pour I de 0 à N-1 Faire
Lire(T[I]) ;
FinPour
//Initialisation
Min←T[0];
Max←T[0];
S←0 ;
Pour I de 0 à N-1 Faire
Si Max < T[I] Alors
Max←T[I]
Finsi ;
Si Min > T[I] Alors
Min←T[I] ;
Finsi;
S←S+ T[I] ;
FinPour;
Moy←S/N ;
Ecrire(“Maximum =”,Max,“ Minimum =”,Min,“
Moyenne =”,Moy);
Fin. Pr. Er-rajy Latifa
Exercice 1 :
Soit T un tableau à une dimension (vecteur) contenant N nombres entiers
(N≤100). Ecrire les algorithmes pour :
2. Calculer le produit de tous les éléments de T ainsi que le nombre de valeurs
strictement positives.

1- Demander à l’utilisateur de saisir N (N≤100)


2- Récupérer les éléments du tableau.
3. Calculer le produit de tous les éléments de T et le nombre de valeurs
strictement positives.

Pr. Er-rajy Latifa


Algorithme Prod ;
Variables tableau T[100]:reel;
I, N, P, Nbp :entier ;
Debut
/*lecture de la taille exacte
Repeter
Ecrire(“Donner la taille du tableau N≤100”) ;
Lire(N)
Jusqu’à N>0 et N <= 100 ;
/*Initialisation
P←1 ;
Nbp←0 ;
/*Lecture des éléments de T et traitement en même temps
Pour I de 0 à N-1 Faire
Lire(T[I]) ;
Si T[I]>0 Alors
Nbp←Nbp+1 ;
Finsi ;
P←P* T[I] ;
FinPour;
Ecrire(“Produit=”, P,“ Nb val positives=”, Nbp) ;
Fin.
Pr. Er-rajy Latifa
Exercice 1 :
Soit T un tableau à une dimension (vecteur) contenant N nombres entiers (N≤100). Ecrire les algorithmes
pour :
3. Calculer la somme et le produit scalaire de deux tableaux (T1 et T2).

1- Demander à l’utilisateur de saisir N (N≤100)


2- Récupérer les éléments des deux tableaux.
3. Calculer la somme et le produit scalaire de deux tableaux (T1 et T2)

la somme - T3[0]←T1[0]+ T2[0];


- T3[1]←T1[1]+ T2[1];
- T3[2]←T1[2]+ T2[2];
……………..
- T3[N-1]←T1[N-1]+ T2[N-1];

le produit scalaire : T1[0]* T2[0] + T1[1]* T2[1] +….+ T1[N-1]* T2[N-1]

4- Afficher la somme (T3) et le produit scalaire.

Pr. Er-rajy Latifa


Algorithme Prod ;
Variables Tableau T1[100], T2[100], T3[100] : entier ;
I, N, PS :entier ;
Debut
/*lecture de la taille exacte
Repeter
Ecrire(“Donner la taille du tableau N≤100”) ;
Lire(N)
Jusqu’à N>0 et N <= 100 ;
/*Lecture des éléments de T1 ensuite T2 ne pas lire dans la même boucle
Pour I de 0 à N-1 Faire
Lire(T1[I]);
FinPour
Pour I de 0 à N-1 Faire
Lire(T2[I]) ;
FinPour ;
/*initialiser Produit scalaire à 0
PS←0 ;
/*La somme de T1 et T2 dans T3
Pour I de 0 à N-1 Faire
T3[I]←T1[I]+ T2[I];
PS←PS+ T1[I]* T2[I];
FinPour;
Ecrire(“Produit Scalaire = ”,PS);
Ecrire(“Somme des vecteurs”);
Pour I de 0 à N-1 Faire
Ecrire (T3[I]) ;
FinPour ;
Fin. Pr. Er-rajy Latifa
Exercice 1 :
Soit T un tableau à une dimension (vecteur) contenant N nombres entiers
(N≤100). Ecrire les algorithmes pour :
4. Déterminer les positions de l’apparition d’une valeur dans T.

1- Demander à l’utilisateur de saisir N (N≤100)


2- Récupérer les éléments du tableau.
3. Demander à l’utilisateur de saisir une valeur.
4. Déterminer les positions de l’apparition de la valeur saisie

Pr. Er-rajy Latifa


 
Algorithme Position ;
Variables Tableau T[100], Pos[100] : entier ; Si J=0 Alors
I, J, N, Val :entier ; Ecrire(Val,’non trouvée’) ;
Debut Sinon
/*lecture de la taille exacte Ecrire(Val,’trouvée aux positions :’) ;
Repeter
Ecrire(“Donner la taille du tableau N≤100”) ; Pour I de 0 à J-1 Faire
Lire(N) Ecrire (Pos[I]) ;
Jusqu’à N>0 et N <= 100 ; FinPour ;

Pour I de 0 à N-1 Faire Finsi ;


Lire(T[I]); Fin.
FinPour ;

Ecrire(“Donner une valeur”) ;


Lire(Val) ;

/*Recherche de val et sa position


J←0 ;

Pour I de 0 à N-1 Faire


Si T[I]=Val Alors
Pos[J]←I
J←J+1 ;
Finsi ;
FinPour ;
Pr. Er-rajy Latifa
Exercice 1 :
Soit T un tableau à une dimension (vecteur) contenant N nombres entiers
(N≤100). Ecrire les algorithmes pour :
5. Inverser le contenu de T.

1- Demander à l’utilisateur de saisir N (N≤100)


2- Récupérer les éléments du tableau.
3. Inverser le contenu du tableau:
- T[0]←T[N-1];
- T[N-1]←T[0]
- T[1]←T[N-2]
- T[N-2]←T[1]
……….
4. Afficher le tableau

Pr. Er-rajy Latifa


 Algorithme Inverse ;
Variables Tableau T[100] : entier ;
I, J, X, N : entier ;
Debut
/*lecture de la taille exacte
Repeter
Ecrire(”Donner la taille du tableau N≤100”) ;
Lire(N) ;
Jusqu’à N>0 et N <= 100 ;
/*Lecture des éléments de T
Pour I de 0 à N-1 Faire
Lire(T[I]) ;
FinPour ;
/*Inverser
I←0 ;
J←N-1 ;
Tantque I<J Faire
X←T[I] ;
T[I]←T[J];
T[J]←X;
I←I+1 ;
J←J-1;
FinTantQue ;
/*Affichage du nouveau tableau T
Pour I de 0 à N-1 Faire
Ecrire(T[I]) ;
FinPour ;
Pr. Er-rajy Latifa
Fin.
Exercice 1 :
Soit T un tableau à une dimension (vecteur) contenant N nombres entiers (N≤100).
Ecrire les algorithmes pour :
6. Supprimer toutes les valeurs nulles de T. N-2
0 x
N-1

1 4 3 5 2 0 6 8 7 ... ... ... … ... 8

Tantque I < N Faire

Si T[I] = 0 Alors
/*boucle de décalage
Pour J de I à N-2 Faire
T[J]←T[J+1];
FinPour ;

N←N-1 /*changer la taille du tableau

Finsi ;

I←I+1 ;
FinTantQue;

Pr. Er-rajy Latifa


 Algorithme SupprimeZero; /*la suppression des zéro revient à décaler les valeurs non
nulles
Variables Tableau T[100] : entier ; I←0;
Tantque I < N Faire
I, J, N : entier ;
Si T[I] = 0 Alors
Debut /*boucle de décalage
Pour J de I à N-2 Faire
/*lecture de la taille exacte
T[J]←T[J+1];
Repeter FinPour ;
N←N-1 /*changer la taille du tableau
Ecrire(“Donner la taille du tableau N≤100”);
Finsi ;
Lire(N) I←I+1 ;
FinTantQue;
Jusqu’à N>0 et N <= 100 ;
Si T[N-1] = 0 Alors
/*Lecture des éléments de T N←N-1
Finsi ;
Pour I de 0 à N-1 Faire
/*Affichage du nouveau tableau T

Lire(T[I]) ; Pour I de 0 à N-1 Faire


Ecrire(T[I]);
FinPour ; FinPour ;
Fin. Pr. Er-rajy Latifa
Exercice 1 :
Soit T un tableau à une dimension (vecteur) contenant N nombres entiers
(N≤100). Ecrire les algorithmes pour :
7. Mettre les valeurs négatives au début et les valeurs positives à la fin en
utilisant un seul tableau.
J=0 J=1 J=2
-1 -4 3 -2 2 1 -6 8 7
1- Rechercher la premier valeur positive.
• Tantque (condition) faire J < N et T[J] < 0
I=2 J=3
instruction(s) J←J+1 ;
finTantQue -1 -4 3 -2 2 1 -6 8 7
2- déplacer les valeurs négatives au début I=3 J=4
(trouver la première valeur positive I←J ) -1 -4 -2 3 2 1 -6 8 7
• Tantque (condition) faire J < N
instruction(s) I=3 J=5
Si T[J] < 0 Alors permuter -1 -4 -2 3 2 1 -6 8 7
I←I+1
I=3 J=6
Finsi ;
J←J+1 -1 -4 -2 3 2 1 -6 8 7
finTantQue I=4 J=7

3- Afficher le tableau -1 -4 -2 -6 2 1 3 8 7
Pr. Er-rajy Latifa
 Algorithme NegPuisPos ;
/*déplacer les valeurs négatives au début (trouver la
Variables Tableau T[100] : entier ;
première valeur positive I )
I, J, N, X : entier ;
I←J ;
Debut
J←J+1 ;
/*lecture de la taille exacte
Tantque J < N Faire
Ecrire(“Donner la taille du tableau N≤100”);
Si T[J] < 0 Alors /*permuter
Repeter
X← T[I] ;
Lire(N) ;
T[I]←T[J];
Jusqu’à N>0 et N <= 100 ;
T[J]←X;
/*Lecture des éléments de T
I←I+1
Pour I de 0 à N-1 Faire
Finsi ;
Lire(T[I]) ;
J←J+1 ;
FinPour ;
FinTantQue ;
/*passer les valeurs négatives au début
/*Affichage du nouveau tableau T
J←0 ;
Pour I de 0 à N-1 Faire
Tantque J < N et T[J] < 0 Faire
Ecrire(T[I]) ;
J←J+1 ;
FinPour;
FinTantQue ;
Fin. Pr. Er-rajy Latifa
Exercice 2 :
Ecrire un algorithme qui permet d’éclater un tableau T de N (N ≤ 100) entiers
supposés positifs en deux tableaux T1 et T2 contenant respectivement les nombres
pairs et impairs de T.

1- Demander à l’utilisateur de saisir N (N≤100)


2- Récupérer les éléments du tableau.
3- écarter le tableau en deux tableaux.
Si T[i]%2=0 alors
T1[J]← T[i]
sinon
T2[k]← T[i]

Pr. Er-rajy Latifa


Algorithme PairImpair ; Ecrire(“Tableau des nombres pairs”) ;
Variables Tableau T1[100], T2[100], T[100] : entier ; Pour I de 0 à J-1 Faire
I, J, K, N : entier ; Ecrire(T1[I]) ;
Debut FinPour ;
/*lecture de la taille exacte Ecrire(“Tableau des nombres impairs”) ;
Repeter Pour I de 0 à K-1 Faire
Ecrire(“Donner la taille du tableau N≤100”) ; Ecrire (T2[I]) ;
Lire(N) ; FinPour ;
Jusqu’à N>0 et N<= 100 ; /*taille de T1 et T2 sont respectivement J
K
Pour I de 0 à N-1 Faire Fin.
Lire(T[I]) ;  
FinPour ;
/*compteurs pour les tableaux pairs et impairs
J←0 ;
K←0 ;
Pour I de 0 à N-1 Faire
Si T[I]%2=0 Alors
T1[J]← T[I] ;
J←J+1 ;
Sinon
T2[K]←T[I] ;
K←K+1 ;
Finsi ;
FinPour ;
Pr. Er-rajy Latifa
Exercice 3 :
Soit T un tableau de N entiers (N≤100). Ecrire un algorithme qui détermine le
nombre de succession de deux valeurs (V1 et V2) particulières dans le vecteur.
1- Demander à l’utilisateur de saisir N (N≤100)
2- Récupérer les éléments du tableau.
3- Demander à l’utilisateur de saisir 2 valeurs
4- lire les deux valeurs
5- détermine le nombre de succession de deux valeurs
Si T[i]=V1 ET T[i+1]=V2 alors
Cpt← Cpt+1

Pr. Er-rajy Latifa


Algorithme Repetition ;
Variables Tableau T[100] : entier ;
I, N, V1, V2, NBrep :entier ;
Debut
/*lecture de la taille exacte
Repeter
Ecrire(“Donner la taille du tableau N≤100”) ;
Lire(N)
Jusqu’à N>0 et N <= 100 ;

Pour I de 0 à N-1 Faire


Lire(T[I]) ;
FinPour ;
Ecrire(“Donner deux valeurs V1 et V2”) ;
Lire(V1,V2)
I←0;
NBrep←0 ;
Tantque I < N-1
Faire
Si T[I]=V1 et T[I+1]=V2 Alors
NBrep← NBrep+1 ;
I←I+1 ;
Finsi ;
FinTantQue ;
Ecrire(“Nombre de successions des valeurs”,V1,V2,“ est :”,NBrep) ;
Fin.

Pr. Er-rajy Latifa


Exercice 4: M colonnes
Soit une matrice A(N, M) de caractères (N≤20 et
M≤30). Ecrire un algorithme qui : ……
1. Recherche un élément dans la matrice A. ……
2. Calcule le nombre de voyelles appartenant ……

lignes
à la matrice A.

N
1- Demander à l’utilisateur de saisir le nombre de lignes (N≤20)
2- Récupérer N
3-Demander à l’utilisateur le nombre de colonnes (M≤30)
…………………………….
4- lire M
6- lire les éléments de la matrice ……
Pour I de 0 à N-1 Faire A
Pour J de 0 à M-1 Faire
Lire(A[I,J]) ; 10- Calcule le nombre de voyelles
FinPour ; appartenant à la matrice A.
FinPour ; Selonque A[I,J] Vaut
7- Demander à l’utilisateur de saisir un caractère ‘a’,’e’,’i’,’o’,’u’,’y’ : Nbv←Nbv+1 ;
8- lire le caractère FinSelon ;
9- Rechercher le caractère ( variable booléen : Existe←faux )
Tanque I < N et Existe=faux Faire
J←0 ;
Tanque J < M et Existe=faux Faire
Si A[I,J]=Val Alors
Existe←Vrai
Finsi ;
J←J+1 ; Tableau A[20][30] : caractère
FinTantQue ;
I←I+1 ;
Pr. Er-rajy Latifa
FinTantQue;
Algorithme Matrice ;
Variables I, J, N, M, Nbv : entier ; Si Existe=vrai Alors
Existe : booleen ;
Ecrire(Val,’Existe’)
Val, Tableau A[20][30] : caractère;
Début Sinon
Repeter Ecrire(Val,’Non trouvée’)
Lire(N) ; Finsi ;
Jusqu’à (N>0) et (N≤20) ; /* nombre de voyelles dans A
Repeter Nbv←0 ;
Lire(M) ; Pour I de 0 à N-1 Faire
Jusqu’à (M>0) et (M≤30) ;
Pour J de 0 à M-1 Faire
//Lecture de la Matrice
Pour I de 0 à N-1 Faire
Selonque A[I,J] Vaut
Pour J de 0 à M-1 Faire ‘a’,’e’,’i’,’o’,’u’,’y’ : Nbv←Nbv+1 ;
Lire(A[I,J]) ; FinSelon ;
FinPour ; FinPour ;
FinPour ; FinPour ;
Ecrire(“Donner la valeur recherchée) ; Ecrire(“Nombre de voyelles est :”,Nbv) ;
Lire(Val) ;
Fin.
/*Recherche de Val
Existe←faux;
I←0 ;
Tanque I < N et Existe=faux Faire
J←0 ;
Tanque J < M et Existe=faux Faire
Si A[I,J]=Val Alors
Existe←Vrai
Finsi ;
J←J+1 ;
FinTantQue ;
I←I+1 ;
Pr. Er-rajy Latifa
FinTantQue;
Exercice 5:
Soit une matrice A(N, M) d’entiers (N≤20 et M≤30), écrire un algorithme qui :
- Calcule et sauvegarde la somme de chaque colonne,
- Détermine la position Jmin de la somme minimale et la position Jmax de la somme
maximale.
- Permute les deux colonnes d’indices Jmin et Jmax de la matrice A si Jmin > Jmax.
Exercice 5:
Soit une matrice A(N, M) d’entiers (N≤20 et M≤30), écrire un algorithme qui :
- Calcule et sauvegarde la somme de chaque colonne,

1- Demander à l’utilisateur de saisir le nombre de lignes (N≤20)


2- Récupérer N
3-Demander à l’utilisateur le nombre de colonnes (M≤30)
4- lire M
5-Calcule et sauvegarde la somme de chaque colonne, et afficher.

M colonnes

………………
N lignes

Pour J de 0 à M-1 Faire


…………………………….
Som[J]←0 ;
………………. Pour I de 0 à N-1 Faire
Som[J]← Som[J]+ A[I,J];

Som[M] Som C0 Som C1 ……………… Som Cm-1


FinPour ;
FinPour ;

Pr. Er-rajy Latifa


Algorithme Matrice ;
Variables I, J, N, M, Jmin, Jmax, X :entier ;
Tableau A[20][30], Som[30] : entier;
Début
Repeter
Lire(N) ;
Jusqu’à (N>0) et (N≤20) ;

Repeter
Lire(M) ;
Jusqu’à (M>0) et (M≤30) ;
//Lecture de la Matrice
Pour I de 0 à N-1 Faire
Pour J de 0 à M-1 Faire
Lire(A[I,J]) ;
FinPour ;
FinPour;
//calcul et stockage de la somme de chaque colonne
Pour J de 0 à M-1 Faire
Som[J]←0 ;
Pour I de 0 à N-1 Faire
Som[J]← Som[J]+ A[I,J];
FinPour ;
FinPour ;
Pour J de 0 à M-1 Faire
Ecrire(Som[J])
FinPour ;
Exercice 5:
Soit une matrice A(N, M) d’entiers (N≤20 et M≤30), écrire un algorithme qui :
- Détermine la position Jmin de la somme minimale et la position Jmax de la somme maximale.
- Permute les deux colonnes d’indices Jmin et Jmax de la matrice A si Jmin > Jmax.
6- Détermine la position Jmin de la somme minimale et la position Jmax de la somme
maximale.
Som[M] Som C0 Som C1 ……………… Som Cm-1

7- Permute les deux colonnes d’indices Jmin et Jmax de la matrice A si Jmin > Jmax.

M colonnes

………………

Permuter
N lignes

…………………………….
Si Jmin>Jmax Alors
………………. Pour I de 0 à N-1 Faire
X← A[I,Jmin];
A[I,Jmin]← A[I,Jmax];
A[I,Jmax]←X
Som[M] Som C0 Som C1 ……………… Som Cm-1 FinPour;0
Jmax Jmin

8- Afficher la matrice
Algorithme Matrice ;
Variables I, J, N, M, Jmin, Jmax, X :entier ; Jmin← 0 ;
Tableau A[20][30], Som[30] : entier; Jmax← 0 ;
Début
Repeter Pour J de 0 à M-1 Faire
Lire(N) ; Si Som[Jmax] < Som[J] Alors
Jusqu’à (N>0) et (N≤20) ; Jmax←J
Finsi ;
Repeter Si Som[Jmin] > Som[J] Alors
Lire(M) ; Jmin←J
Jusqu’à (M>0) et (M≤30) ; Finsi ;
//Lecture de la Matrice FinPour;
Pour I de 0 à N-1 Faire Ecrire(“Position Jmin=”,Jmin,“ Jmax=”,Jmax) ;
Pour J de 0 à M-1 Faire Si Jmin>Jmax Alors
Lire(A[I,J]) ; Pour I de 0 à N-1 Faire
FinPour ; X← A[I,Jmin];
FinPour; A[I,Jmin]← A[I,Jmax];
//calcul et stockage de la somme de chaque A[I,Jmax]←X
colonne FinPour;
Pour J de 0 à M-1 Faire //affichage
Som[J]←0 ; Pour I de 0 à N-1 Faire
Pour I de 0 à N-1 Faire Pour J de 0 à M-1 Faire
Som[J]← Som[J]+ A[I,J]; Ecrire(A[I,J]) ;
FinPour ; FinPour ;
FinPour ; FinPour;
Pour J de 0 à M-1 Faire Finsi;
Ecrire(Som[J]) Fin
FinPour ; Pr. Er-rajy Latifa

Vous aimerez peut-être aussi