Professional Documents
Culture Documents
2018/2019
Par : HABET M.-S.
Solution de l’Exercice 1 :
Algorithme Exo1
Const N=8
Var T : tableau[1..N] de réel
som, moy, prod : réel
i, nbz : entier
Début
Ecrire(‘donner les éléments du tableau : ’)
Pour i←1 à N faire
Lire(T[i])
FinPour
nbz ← 0
som ← 0
prod ← 1
Pour i←1 à N faire
som ← som+T[i]
si T[i]<>0 alors prod ← prod*T[i] sinon nbz ← nbz+1 Finsi
FinPour
moy ← som/N
Ecrire(‘somme des elts : ’,som, ‘ moyenne : ’,moy)
Si nbz<N alors
Ecrire(‘produit des éléments non nuls : ’,prod)
sinon
Ecrire(‘tous les éléments sont nuls ’)
Finsi
Fin
Programme en langage C :
#include <stdio.h>
#define N 8
main()
{
float T[N], som, moy, prod;
int i,nbz;
som=0;
prod=1;
for (i=0;i<N;i++){
som = som+T[i];
if (T[i]!=0) prod=prod*T[i]; else nbz++;
}
moy=som/N;
printf("somme des elts : %f , moyenne : %f \n",som,moy);
if (nbz<N)
printf("produit des éléments non nuls : %f \n",prod);
else
printf("tous les éléments sont nuls \n");
}
Solution de l’Exercice 2 :
Algorithme Exo2
Const N=8
Var T1, T2, T3 : tableau[1..N] de réel
ps : réel
i : entier
Début
Ecrire(‘donner les éléments du 1er tableau : ’)
Pour i←1 à N faire
Lire(T1[i])
FinPour
Ecrire(‘donner les éléments du 2ième tableau : ’)
Pour i←1 à N faire
Lire(T2[i])
FinPour
ps ← 0
Pour i←1 à N faire
T3[i] ← T1[i]+T2[i]
ps ← ps+T1[i]*T2[i]
FinPour
Ecrire(‘vecteur somme : ’)
Pour i←1 à N faire
Ecrire(T3[i],‘ ’)
FinPour
Ecrire(‘produit scalaire : ’,ps)
Fin
Programme en langage C :
#include <stdio.h>
#define N 8
main()
-2-
INSIM – Tizi-Ouzou Corrigé de la série 3 Algorithmique 2018/2019
{
float T1[N], T2[N], ps;
int i;
ps=0;
for (i=0; i<N; i++){
T3[i] = T1[i]+T2[i];
ps = ps+T1[i]*T2[i];
}
Solution de l’Exercice 3 :
1) On permute T[1] avec T[n], T[2] avec T[n-1], … jusqu’à T[n div 2] et T[n div 2 + 1], si n est pair
ou T[n div 2] et T[n div 2 + 2] sinon :
Algorithme Inv1
Const Nmax=20
Var T : tableau[1..Nmax] de entier
i, j, n, tmp : entier
Début
Ecrire(‘nombre d’’éléments du tableau ? ’)
Répéter Lire(n) Jusqu’à (n>=1) et (n<=Nmax)
Ecrire(‘ donnez les ’,n,‘ éléments de T : ’)
Pour i ← 1 à n faire
Ecrire(i,’ième élément : ’) ; Lire(T[i])
FinPour
i←1; j←n
Tant que i<j faire
tmp ← T[i]
T[i] ← T[j]
T[j] ← tmp
i ← i+1
j ← j-1
FinTanque
-3-
INSIM – Tizi-Ouzou Corrigé de la série 3 Algorithmique 2018/2019
2) On copie T[1] dans Tinv[n], T[2] dans Tinv[n-1], … jusqu’à T[n] dans Tinv[1].
Algorithme Inv2
Const Nmax=20
Var T, Tinv : tableau[1..Nmax] de entier
i, n : entier
Début
Ecrire(‘nombre d’’éléments du tableau ? ’)
Répéter Lire(n) Jusqu’à (n>=1) et (n<=Nmax)
Ecrire(‘ donnez les ’,n,‘ éléments de T : ’)
Pour i ← 1 à n faire
Ecrire(i,’ième élément : ’) ; Lire(T[i])
FinPour
Pour i ← 1 à n faire
Tinv[n-i+1] ← T[i]
FinPour
Ecrire (‘tableau inversé : ’)
Pour i ← 1 à n faire Ecrire(‘ ’,Tinv[i]) FinPour
Fin
-4-
INSIM – Tizi-Ouzou Corrigé de la série 3 Algorithmique 2018/2019
Programme en langage C :
#include <stdio.h>
#define Nmax 20
main()
{ int T[Nmax], Tinv[Nmax], i, n ;
printf("nombre d’éléments du tableau ? ");
do { scanf("%d",&n) ;} while ((n<1) || (n>Nmax));
printf(" donnez les %d éléments de T : \n",n) ;
for (i=0 ; i<n ;i++){
printf("élément d'indice %d : ",i) ; scanf("%d",&T[i]) ;
}
Solution de l’Exercice 4 :
1) recherche séquentielle :
Algorithme Rech_Seq
Const Nmax=20
Var T : tableau[1..Nmax] de entier
k, n, X : entier
trouv : booléen
Début
Ecrire(‘nombre d’’éléments du tableau ? ’)
Répéter Lire(n) Jusqu’à (n>=1) et (n<=Nmax)
Ecrire(‘ donnez les ’,n,‘ éléments de T : ’)
Pour k ← 1 à n faire
Ecrire(k,’ième élément : ’) ; Lire(T[k])
FinPour
k ← 1 ; trouv ← FAUX
Tant que (k<=n) et non trouv faire
Si T[k]=X alors
trouve ← VRAI
Sinon
k ← k+1
FinSi
FinTantque
Si trouve alors Ecrire(X,‘ existe dans le tableau ; son rang est : ’,k)
Sinon Ecrire(X,‘ n’’existe pas dans le tableau’)
FinSi
Fin
-5-
INSIM – Tizi-Ouzou Corrigé de la série 3 Algorithmique 2018/2019
Programme en langage C :
#include <stdio.h>
#define TRUE 1
#define FALSE 0
#define Nmax 10
main()
{ int T[Nmax], i, n, trouve, X;
printf("nombre d'éléments du tableau ? ");
do {scanf("%d",&n);}
while ((n<1)||(n>Nmax));
printf("donner les elts du tableau : \n");
for (i=0; i<n; i++) {
printf("element d'indice %d : ",i);
scanf("%d",&T[i]); }
printf("donner l'elt à rechercher : ");
scanf("%d",&X);
trouve = FALSE;
i=0;
while((i<n)&&!(trouve)){
if (T[i]==X) trouve=TRUE;
else i++;
}
if (trouve)
printf("l'élément existe, son rang est : %d \n",i);
else
printf("élément introuvable\n");
}
2) recherche dichotomique :
Algorithme Rech_dich
Const Nmax=20
Var T : tableau[1..Nmax] de entier
D, F, M, X : entier
trouv : booléen
Début
Ecrire(‘nombre d’’éléments du tableau ? ’)
Répéter Lire(n) Jusqu’à (n>=1) et (n<=Nmax)
Ecrire(‘ donnez les ’,n,‘ éléments de T : ’)
Ecrire(‘1er élément : ’) ; Lire(T[1])
Pour k ← 2 à n faire
Ecrire(k,’ième élément : ’)
Répéter Lire(T[k]) Jusqu’à (T[k]>=T[k-1]) /* lire un tableau ordonné */
FinPour
D ← 1 ; F ← n ; trouv ← FAUX
-6-
INSIM – Tizi-Ouzou Corrigé de la série 3 Algorithmique 2018/2019
Répéter
M ← (D + F) div 2
Si X=T[M] alors
trouve ← VRAI
Sinon
Si X<T[M] alors F ← M-1 Sinon D ← M+1 FinSi
FinSi
Jusqu’à trouv ou (D>F)
Si trouve alors Ecrire(X,‘ existe dans le tableau ; son rang est : ’,M)
Sinon Ecrire(X,‘ n’’existe pas dans le tableau’) FinSi
Fin
Programme en langage C :
#include <stdio.h>
#include <stdlib.h>
#define TRUE 1
#define FALSE 0
#define Nmax 10
int main()
{ int T[Nmax], i, n, trouve, D, F, M, X;
-7-
INSIM – Tizi-Ouzou Corrigé de la série 3 Algorithmique 2018/2019
if (trouve)
printf("l'element existe, son indice est : %d \n",M);
else printf("element introuvable\n");
}
Solution de l’Exercice 5 :
On va utiliser la méthode du tri par sélection : on cherche le plus petit élément parmi T[1], T[2], …
T[n], et on l’échange avec T[1] ; puis on cherche le plus petit élément parmi T[2], … T[n], et on
l’échange avec T[2] ; et ainsi de suite jusqu’à arriver à T[n-1].
Algorithme Tri_selection
Const Nmax=20
Var T : tableau[1..Nmax] de entier
i, j, min, tmp : entier
Début
Ecrire(‘nombre d’’éléments du tableau ? ’)
Répéter Lire(n) Jusqu’à (n>=1) et (n<=Nmax)
Ecrire(‘ donnez les ’,n,‘ éléments de T : ’)
Pour i ← 1 à n faire Ecrire(i,’ième élément : ’) ; Lire(T[i]) FinPour
Pour i ← 1 à n-1 faire
min ← i
Pour j ← i+1 à n faire
Si T[j] < T[min] alors min ← j FinSi
FinPour
Si min<>i alors tmp ← T[i] ; T[i] ← T[min] ; T[min] ← tmp FinSi
FinPour
Ecrire (‘tableau trié : ’)
Pour i ← 1 à n faire Ecrire(‘ ’,T[i]) FinPour
Fin
Programme en langage C :
#include <stdio.h>
#define Nmax 20
main()
{ int T[Nmax], n, i, j, min, tmp ;
if (min != i) {
tmp=T[i]; T[i] = T[min]; T[min]=tmp; }
}
printf("tableau trie : \n");
for (i=0 ; i<n ; i++)
printf(" %d ",T[i]);
}
Solution de l’Exercice 6 :
1) Somme de deux matrices :
Algorithme Exo6
Const n= 3, m=4
Var A, B, C : tableau [1..n,1..m] de réel
i, j : entier
Début
Ecrire(‘donner les éléments de la matrice A :’)
Pour i←1 à n faire
Pour j←1 à m faire
Lire(A[i,j])
FinPour
FinPour
Ecrire(‘donner les éléments de la matrice B :’)
Pour i←1 à n faire
Pour j←1 à m faire
Lire(B[i,j])
FinPour
FinPour
Pour i←1 à n faire
Pour j←1 à m faire
C[i,j] ← A[i,j] + B[i,j]
FinPour
FinPour
Ecrire(‘les éléments de la matrice somme :’)
Pour i←1 à n faire
Pour j←1 à m faire
Ecrire(C[i,j]) /* sans retour chariot */
FinPour
Ecrire (‘ ’) /* avec retour chariot pour aller au début de la ligne suivante */
FinPour
Fin
Programme en langage C :
#include <stdio.h>
#define n 3
-9-
INSIM – Tizi-Ouzou Corrigé de la série 3 Algorithmique 2018/2019
#define m 4
main()
{ float A[n][m], B[n][m], C[n][m];
int i, j;
- 10 -
INSIM – Tizi-Ouzou Corrigé de la série 3 Algorithmique 2018/2019
Solution de l’Exercice 7 :
1)
Algorithme Exo7_1
Const n= 3
Var A, B : tableau [1..n,1..n] de réel
i, j : entier
Début
Ecrire(’donner les éléments de la matrice A :’)
Pour i←1 à n faire
Pour j←1 à n faire
Lire(A[i,j])
FinPour
FinPour
Pour i←1 à n faire
Pour j←1 à n faire
B[j,i] ← A[i,j]
FinPour
FinPour
Ecrire(‘ matrice transposée : ’)
Pour i←1 à n faire
Pour j←1 à n faire
Ecrire(B[i,j],‘ ’) /* sans retour chariot */
FinPour
Ecrire (‘ ’) /* avec retour chariot */
FinPour
Fin
Programme en langage C :
#include <stdio.h>
#define n 3
main()
{ int A[n][n], B[n][n], i, j;
2)
Algorithme Exo7_2
Const n= 3
Var A : tableau [1..n,1..n] de réel
i, j : entier ; tmp : réel
Début
Ecrire(’donner les éléments de la matrice A :’)
Pour i←1 à n faire
Pour j←1 à n faire
Lire(A[i,j])
FinPour
FinPour
Pour i←2 à n faire
Pour j←1 à i-1 faire
tmp ← A[i,j])
A[i,j] ← A[j,i])
A[j,i] ← tmp
FinPour
FinPour
Ecrire(‘ matrice transposée : ’)
Pour i←1 à n faire
Pour j←1 à n faire
Ecrire(A[i,j], ‘ ’) /* sans retour chariot */
FinPour
Ecrire (‘ ’) /* avec retour chariot */
FinPour
Fin
Programme en langage C :
#include <stdio.h>
#define n 3
main()
- 12 -
INSIM – Tizi-Ouzou Corrigé de la série 3 Algorithmique 2018/2019
- 13 -