Correction TD4-2021
Correction TD4-2021
Correction TD4-2021
Exercice 1
Algorithme ex1-P1
Const
M = 100
Variable
T : Tableau [1..M] d’Entier
T_min, i_min, i, N : Entier
Début
Répeter
Écrire("Donner la dimension N du Tableau T ")
Lire (N)
Jusqu’à (N <= M) ET (N > 0)
Pour i de 1 à N Faire
Écrire(" Donner l’élément T [," i , " ] = ")
Lire (T[i])
FinPour
T_min T[1]
i_min 1
Pour i de 2 à N Faire
Si T[i] <= T_min Alors
T_min T[i]
i_min i
FinSi
FinPour
Écrire("La plus petite valeur du tableau T= ", T_min, " est son indice = ", i_min)
Fin
Algorithme ex1-P2
Const
M = 100
Variable
T : Tableau [1..M] d’Entier
T_max, i_max, N,i : Entier
Début
Répeter
Écrire("Donner la dimension N du Tableau T ")
Lire (N)
Jusqu’à (N <= M) ET (N > 0)
Pour i de 1 à N Faire
Écrire(" Donner l’élément T [," i , " ] = ")
Lire (T[i])
FinPour
T_max T[1]
i_max 1
Pour i de 2 à N Faire
Si T[i] > T_min Alors
T_max T[i]
i_max i
FinSi
FinPour
Écrire("La plus petite valeur du tableau T= ", T_max, " est son indice = ", i_max)
Fin
Algorithme ex1_P3
Const
M = 100
Variable
T : Tableau [1..M] d’Entier
nb_T_nul, N,i : Entier
Début
Répeter
Écrire("Donner la dimension N du Tableau T ")
Lire (N)
Jusqu’à (N <= M) ET (N > 0)
Pour i de 1 à N Faire
Écrire(" Donner l’élément T [," i , " ] = ")
Lire (T[i])
Si T[i] = 0 Alors
nb_T_nul nb_T_nul + 1
FinSi
FinPour
Écrire("Le nombre d’éléments nul du tableau T= ", nb_T_nul)
Fin
Algorithme ex1_P4
Const
M = 100
Variable
T : Tableau [1..M] d’Entier
N,i : Entier
T_moy :Réel
Début
Répeter
Écrire("Donner la dimension N du Tableau T ")
Lire (N)
Jusqu’à (N <= M) ET (N > 0)
Pour i de 1 à N Faire
Écrire(" Donner l’élément T [," i , " ] = ")
Lire (T[i])
T_moyT_moy + T[i]
FinPour
T_moy T_moy / N
Écrire("La moyenne des éléments du tableau T= ", T_moy)
Fin
Exercie 2
Algorithme ex2_P1
Variable
A : Tableau [1..120] de Réel
B : Tableau [1..50] de Réel
i, N, M : Entier
Début
Répeter
Écrire("Donner la dimension N du Tableau B ")
Lire (N)
Jusqu’à (N <= 50) ET (N > 0)
Pour i de 1 à N Faire
Écrire(" Donner l’élément B[," i , " ] = ")
Lire (B[i])
FinPour
Répeter
Écrire("Donner la dimension M du Tableau A ")
Lire (M)
Jusqu’à (M <= 70) ET (M > 0)
Pour i de 1 à M Faire
Écrire(" Donner l’élément A[," i , " ] = ")
Lire (A[i])
FinPour
Pour i de 1 à N Faire
A[M+i] B[i]
FinPour
Fin
Algorithme ex2_P2
Variable
A : Tableau [1..120] de Réel
B : Tableau [1..50] de Réel
j, i, N, M : Entier
Début.
Répeter
Écrire("Donner la dimension N du Tableau B ")
Lire (N)
Jusqu’à (N <= 50) ET (N > 0)
Pour i de 1 à N Faire
Écrire(" Donner l’élément B[," i , " ] = ")
Lire (B[i])
FinPour
Répeter
Écrire("Donner la dimension M du Tableau A ")
Lire (M)
Jusqu’à (M <= 70) ET (M > 0)
Pour i de 1 à M Faire
Écrire(" Donner l’élément A[," i , " ] = ")
Lire (A[i])
FinPour
i M
j 1
TantQue j <= N Faire
Si B[j] >= 0 Alors
i i+1
A[i] B[j]
FinSi
j j+1
FinTantQue
Fin
Algorithme ex2_P3
Variable
A : Tableau [1..120] de Réel
B : Tableau [1..50] de Réel
i, N, M : Entier
Début.
Répeter
Écrire("Donner la dimension N du Tableau B ")
Lire (N)
Jusqu’à (N <= 50) ET (N > 0)
Pour i de 1 à N Faire
Écrire(" Donner l’élément B[," i , " ] = ")
Lire (B[i])
FinPour
Répeter
Écrire("Donner la dimension M du Tableau A ")
Lire (M)
Jusqu’à (M <= 70) ET (M > 0)
Pour i de 1 à M Faire
Écrire(" Donner l’élément A[," i , " ] = ")
Lire (A[i])
FinPour
Pour i de 2 à N pas 2 Faire
A[M+ (i div 2) ] B[i]
FinPour
Fin
Exercie 3
#include <stdio.h>
main()
/* Déclarations */
int T[50]; /* tableau donné */
int N; /* dimension */
scanf("%d", &N );
scanf("%d", &T[I]);
/* Affichage du tableau */
printf("\n");
/* Inverser le tableau */
AIDE = T[I];
T[I] = T[J];
T[J] = AIDE;
printf("\n");
return 0;
}
Exercice 4
Explication de l’idée
• Vérifier si T est symétrique :
– Rappel, T est symétrique si T(i,j) = T(j,i) pour tout i et j
• Idée: D’abord supposer que T est symétrique avec S = 1
• Ensuite, comparer chaque case T(i,j) avec la case T(j,i).
– Si elles sont différentes alors affecter la valeur 0 à S
•A la fin, il suffit de voir la valeur de S pour savoir si le tableau est symétrique ou pas
Exercice 5
Variables Nb, i : Entier
Debut
Lire (Nb)
Pour i de 0 à Nb - 1
Lire T[i]
Fin pour
Flag ← Vrai
Pour i de 1 à Nb - 1
Flag ← Faux
FinSi
Fin pour
Si Flag Alors
Sinon
FinSi
Fin
Exercice 6
*Ecrire un algorithme permettant de trier par ordre croissant les éléments d’un tableau.
lgorithme 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
*Ecrire un algorithme permettant de trier par ordre décroissant les éléments d’un tableau.
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
https://waytolearnx.com/2019/08/fusionner-deux-tableaux-en-c.html
Utiliser trois indices IA, IB et IFUS. Comparer A[IA] et B[IB]; remplacer FUS[IFUS]
par le plus petit des deux éléments; avancer dans le tableau FUS et dans le
tableau qui a contribué son élément. Lorsque l’un des deux tableaux A ou B est
épuisé, il suffit de recopier les éléments restants de l’autre tableau dans le
tableau FUS.
#include <stdio.h>
main()
{
/* Déclarations */
/* Les tableaux et leurs dimensions */
int A[50], B[50], FUS[100];
int N, M;
int IA, IB, IFUS; /* indices courants */
/* Saisie des données */
printf("Dimension du tableau A (max.50) : ");
scanf("%d", &N );
printf("Entrer les éléments de A dans l'ordre croissant :\n");
for (IA=0; IA<N; IA++)
{
printf("Elément A[%d] : ", IA);
scanf("%d", &A[IA]);
}
printf("Dimension du tableau B (max.50) : ");
scanf("%d", &M );
printf("Entrer les éléments de B dans l'ordre croissant :\n");
for (IB=0; IB<M; IB++)
{
printf("Elément B[%d] : ", IB);
scanf("%d", &B[IB]);
}
/* Affichage des tableaux A et B */
printf("Tableau A :\n");
for (IA=0; IA<N; IA++)
printf("%d ", A[IA]);
printf("\n");
printf("Tableau B :\n");
for (IB=0; IB<M; IB++)
printf("%d ", B[IB]);
printf("\n");
Exercice 7
1. #include<stdio.h>
2. #include<stdlib.h>
3. int main()
4. {
5. int t[100];
6. int i,j,n,a;
8. scanf("%d",&n);
9. for(i=0;i<n;i++)
10. {
12. scanf("%d",&t[i]);
13. }
14. for(i=0;i<n;i++)
16. printf("\n");
18. scanf("%d",&a);
19. for(i=0;i<n;i++)
20. {
21. if(t[i]==a)
22. {
23. for(j=i;j<n-1;j++)
24. t[j]=t[j+1];
25. n--;
26. i--;
27. }
28. }
29. for(i=0;i<n;i++)
31. printf("\n");
32. system("pause");
33. return 0;
34. }
Exercice 8
• #include <stdio.h>
• int main()
• {
• int n;
• int T[100];
• do
• {
• scanf("%d",&n);
• //remplissage du tableau
• {
• scanf("%d",&T[i]);
• }
• scanf("%d",&insertVal);
• do
• {
• scanf("%d",&pos);
• //décalage d'une position à droite pour libérer la case d'indice pos-1 pur l'insertion
• T[i] = T[i-1];
• //Affichage du tableau
• printf("%d|", T[i]);
• }
Exercice 9
Q1
#include <stdio.h>
int main()
// Déclarations
int M1[100][100];
int M2[100][100];
int M3[100][100];
int N, M, P;
int i, j, k;
do
scanf("%d", &N );
}while(N<=0 || N>100);
do
scanf("%d", &M );
}while(M<=0 || M>100);
printf("\tElément[%d][%d] : ",i+1,j+1);
scanf("%d", &M1[i][j]);
scanf("%d", &P );
}while(P<=0 || P>100);
printf("\tElément[%d][%d] : ",i+1,j+1);
scanf("%d", &M2[i][j]);
puts("\nMatrice M1 :\n");
printf("%5d", M1[i][j]);
printf("\n");
puts("\nMatrice M2 :\n");
printf("%5d", M2[i][j]);
printf("\n");
M3[i][j]=0;
M3[i][j] += M1[i][k]*M2[k][j]; //la somme des produits des element de la même ligne
/* Edition du résultat */
printf("%5d", M3[i][j]);
printf("\n");
Q2.
#include <stdio.h>
int main()
// Déclarations
int M1[100][100];
int M2[100][100];
int N;
int i, j, k;
do
{
printf("Nombre de lignes/colonne (max.100) : ");
scanf("%d", &N );
}while(N<=0 || N>100);
printf("\tElément[%d][%d] : ",i+1,j+1);
scanf("%d", &M1[i][j]);
M2[i][j] = M1[j][i];
printf("%5d", M1[i][j]);
printf("\n");
printf("\n");
Q3
#include <stdio.h>
int main()
// Déclarations
int M[50][50];
int T[2500];
int n, m;
int i, j, k;
do
scanf("%d", &n );
}while(n<=0 || n>50);
do
scanf("%d", &m );
}while(m<=0 || m>50);
{
printf("\n=> Ligne numero %d \n", i+1);
printf("\tElément[%d][%d] : ",i+1,j+1);
scanf("%d", &M[i][j]);
//remplissage du tableau
k = 0;
T[k] = M[i][j];
k++;
//Affichage du tableau