Vous êtes sur la page 1sur 12

Module : Atelier Programmation Enseignante : Mme Hajer BACCOUCH

Direction Générale des


TI11
Etudes Technologiques
Corrigé TP 5 Année Universitaire :

(Tableaux) 2021/2022
Semestre 1
Département TI
Nombre Pages : 4

Exercice 1 (Lecture et affichage d’un tableau d’entiers)


Ecrire un programme qui lit la dimension N d’un tableau d’entiers Tab et lit les éléments de Tab, les
affichent sur écran et calcule la somme des éléments.

#include <stdio.h>
void main()
{
const Max = 50;
int Tab[Max], N, somme=0; // N : la taille du tableau
int i;

//On doit saisir une taille positive et inférieure au max qui est 50.
do {
printf("Donner la dimension du tableau : ");
scanf("%d", &N);
} while (N>Max || N<=0);

//Saisie des éléments du tableau


for(i=0;i<N;i++)
{
printf("Donner l’élément N° %d :", i);
scanf("%d",&Tab[i]) ;
}

//affichage du tableau sur l’écran


printf("\nLe tableau est : ") ;
for(i=0;i<N;i++)
{
printf("%d ",Tab[i]);
somme+=Tab[i]; //somme = somme+Tab[i]
}

printf("\nLa somme des éléments du tableau est : %d", somme);


}

Exercice 2 (Produit scalaire de deux vecteurs)


Ecrire un programme qui calcule le produit scalaire de deux vecteurs d'entiers U et V (de même
dimension).

Mme Hajer BACCOUCH 1


#include <stdio.h>
void main()
{
const Max = 50;
int U[Max],V[Max], N, ps=0; // N : la taille des deux tableaux
int i;

//On doit saisir une taille positive et inférieure au max qui est 50.
do {
printf("Donner la dimension du tableau : ");
scanf("%d", &N);
} while (N>Max || N<=0);

//Saisie des éléments du tableau U


for(i=0;i<N;i++)
{
printf("Donner U[%d] :", i);
scanf("%d",&U[i]) ;
}

//Saisie des éléments du tableau V


for(i=0;i<N;i++)
{
printf("Donner V[%d] :", i);
scanf("%d",&V[i]) ;
}
//Calcul du produit scalaire des deux vecteurs
for(i=0;i<N;i++)
{
ps = ps + U[i]*V[i];
}

printf("\nLe produit scalaire de U et V = %d.", ps);


}

Exercice 3 (Recherche d'une valeur dans un tableau)


Ecrire un programme C qui permet de rechercher dans un tableau de caractères A entré au clavier
un caractère CH entré aussi au clavier. Afficher la position de CH si elle se trouve dans le tableau,
sinon afficher un message correspondant. La valeur POS qui est utilisée pour mémoriser la position
de la valeur dans le tableau, aura la valeur -1 si CH n'a pas été trouvée.

#include <stdio.h>
void main()
{
const Max = 50;
char TCH[Max], ch, pos = -1;
int i, N;

do {
printf("Donner la dimension du tableau : ");
scanf("%d", &N);

Mme Hajer BACCOUCH 2


} while (N>Max || N<=0);

//Saisie des éléments du tableau


for(i=0;i<N;i++)
{
printf("Donner TCH[%d] :", i);
scanf("%c",&TCH[i]) ;
}

printf("Donner un caractère à rechercher : ");


scanf("%c",&ch) ;

for(i=0;i<N;i++)
{
if (ch == TCH[i])
{
pos = i;
break;
}
}

if(pos != -1)
{
printf("Le caractère %c existe à la position %d.\n", ch, pos);
}
else
{
printf("Le caractère %c n'existe pas.\n", ch);
}
}

Exercice 4 (Somme de deux tableaux)


Écrire un programme qui prend trois tableaux d'entiers de même taille et qui range dans le
troisième la somme des éléments des deux tableaux.

#include <stdio.h>
void main()
{
const Max = 50;
int T1[Max],T2[Max], T3[Max], N;
int i;

do {

Mme Hajer BACCOUCH 3


printf("Donner la dimension du tableau : ");
scanf("%d", &N);
} while (N>Max || N<=0);

//Saisie des éléments du tableau T1


for(i=0;i<N;i++)
{
printf("T1[%d] ?", i);
scanf("%d",&T1[i]) ;
}

//Saisie des éléments du tableau T2


for(i=0;i<N;i++)
{
printf("T2[%d] ?", i);
scanf("%d",&T2[i]) ;
}

printf("\n\nLe tableau T3 : | ");


for(i=0;i<N;i++)
{
T3[i] = T1[i]+T2[i];
printf("%d | ", T3[i]);
}
}

Exercice 5 (Statistiques des notes)


Ecrire un programme qui lit les notes de N élèves d'une classe dans un devoir et les mémorise dans
un tableau POINTS de dimension N.
Le programme doit rechercher et afficher la note minimale, la note maximale et la moyenne des
notes.
A partir des POINTS des élèves, établir un tableau NOTES de dimension 6 qui est composé de la
façon suivante:
NOTES[5] contient le nombre de notes = 20
NOTES[4] contient le nombre de notes >=15 et <20
NOTES[3] contient le nombre de notes >=12 et <15
NOTES[2] contient le nombre de notes >=10 et <12
NOTES[1] contient le nombre de notes >=7 et <10
NOTES[0] contient le nombre de notes >=0 et <7

#include <stdio.h>
void main()
{
int POINTS[50]; /* tableau des points */
int NOTES[7]; /* tableau des notes */

Mme Hajer BACCOUCH 4


int N; /* nombre d'élèves */
int I, J; /* compteurs */
int SOM; /* somme des points */
int MAX, MIN; /* maximum, minimum de points */
int MAXN; /* nombre de lignes du graphique */

/* Saisie des données */


printf("Entrez le nombre d'élèves (max.50) : ");
scanf("%d", &N);
printf("Entrez les points des élèves:\n");
for (I=0; I<N; I++)
{
printf("Elève %d:", I+1);
scanf("%d", &POINTS[I]);
}
printf("\n");

/* Calcul et affichage du maximum et du minimum des points */


MAX=0;
MIN=20;
for (I=0; I<N; I++)
{
if (POINTS[I] > MAX)
MAX=POINTS[I];

if (POINTS[I] < MIN)


MIN=POINTS[I];
}

printf("La note maximale est %d \n", MAX);


printf("La note minimale est %d \n", MIN);

/* Calcul et affichage de la moyenne des points */


for (SOM=0,I=0 ; I<N ; I++)
SOM += POINTS[I]; //SOM = SOM + POINTS[I];

printf("La moyenne des notes est %.2f \n", (float)SOM/N);

/* Etablissement du tableau NOTES */


for (J=0 ; J<6 ; J++)
NOTES[J] = 0;

for (I=0; I<N; I++)


{
if (POINTS[I]>=0 && POINTS[I]<7)
NOTES[0]++;
if (POINTS[I]>=7 && POINTS[I]<10)
NOTES[1]++;
if (POINTS[I]>=10 && POINTS[I]<12)
NOTES[2]++;
if (POINTS[I]>=12 && POINTS[I]<15)
NOTES[3]++;
if (POINTS[I]>=15 && POINTS[I]<20)
NOTES[4]++;

Mme Hajer BACCOUCH 5


if (POINTS[I]==20)
NOTES[5]++;
}

for (I=0; I<6; I++)


{
printf("\nNOTES[%d] = %2d", I, NOTES[I]);
}

Exercice 6 (Mise à zéro de la diagonale principale d'une matrice)


Ecrire un programme qui met à zéro les éléments de la diagonale principale d'une matrice carrée A
donnée.

#include <stdio.h>
#include <stdlib.h>

int main()
{
const N=10;
int M[N][N],i,j;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
M[i][j]=rand()%1000;
}
}

//Affichage Matrice avant


printf("\nMatrice Avant \n");
for(i=0;i<N;i++)
{
printf("\n");
for(j=0;j<N;j++)
{
printf("%3d ",M[i][j]);
}
}

//Mise à zéro
for(i=0;i<N;i++)
{
M[i][i]=0;
}

//Affichage Matrice après


printf("\nMatrice Apres \n");
for(i=0;i<N;i++)
{
printf("\n");
for(j=0;j<N;j++)

Mme Hajer BACCOUCH 6


{
printf("%3d ",M[i][j]);
}
}
}

Exercice 7 (Matrice unitaire)


Ecrire un programme qui construit et affiche une matrice carrée unitaire U de dimension N (un
entier lu du clavier). Une matrice unitaire est une matrice, telle que:

#include <stdio.h>
#include <stdlib.h>

int main()
{
const N=100;
int M[N][N],i,j, n;
do
{
printf("Donner dimension de la matrice carre : ");
scanf("%d",&n);
} while(n<1 || n>N);

for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(i==j)
M[i][j]=1;
else
M[i][j]=0;

}
}

//Affichage Matrice
printf("\nMatrice \n");
for(i=0;i<n;i++)
{
printf("\n");
for(j=0;j<n;j++)
{
printf("%d ",M[i][j]);
}
}
}

Mme Hajer BACCOUCH 7


Exercice 7 (Multiplication d'une matrice par un réel)
Ecrire un programme qui réalise la multiplication d'une matrice A par un réel X.
Le résultat de la multiplication sera mémorisé dans une deuxième matrice B qui sera ensuite
affichée.

X* =

#include <stdio.h>
#include <stdlib.h>

int main()
{
const N=100;
float A[N][N];
int i,j, l,c;
float r;

do
{
printf("Donner le nombre de lignes de la matrice A : ");
scanf("%d",&l);
} while(l<1 || l>N);

do
{
printf("Donner le nombre de colonnes de la matrice A : ");
scanf("%d",&c);
} while(c<1 || c>N);

printf("Donner un nombre reel : ");


scanf("%f",&r);

for(i=0;i<l;i++)
{
for(j=0;j<c;j++)
{
A[i][j]=rand()%100;
}
}

//Affichage Matrice Avant


printf("\nMatrice Avant multiplication : \n");
for(i=0;i<l;i++)
{
printf("\n");
for(j=0;j<c;j++)
{
printf("%.3f\t",A[i][j]);

Mme Hajer BACCOUCH 8


}
}

//Multiplication de la Matrice par le reel


for(i=0;i<l;i++)
{
for(j=0;j<c;j++)
{
A[i][j]=A[i][j] * r;
}
}

//Affichage Matrice Apres


printf("\nMatrice Apres multiplication : \n");
for(i=0;i<l;i++)
{
printf("\n");
for(j=0;j<c;j++)
{
printf("%.3f\t",A[i][j]);
}
}
}

Exercice 8 (Multiplication de deux matrices)


Écrire un programme permettant de multiplier une matrice A de dimensions N et M avec une
matrice B de dimensions M et P et qui retourne la matrice C de dimensions N et P : A(N,M) * B(M,P)
= C(N,P) La multiplication de deux matrices se fait en multipliant les composantes des deux
matrices lignes par colonnes :

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
int A[100][100], B[100][100], C[100][100];
int i,j,k,N, M,P;

int s;

//Saisie des nombre de lignes et de colonnes de A et B


printf("Donner N, M, P : ");

Mme Hajer BACCOUCH 9


scanf("%d-%d-%d", &N, &M, &P);

srand(time(0));
//initialisation de A
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
{
A[i][j] = rand()% 10;
}
}

//Initialisation de B
for(j=0;j<M;j++)
{
for(k=0;k<P;k++)
{
B[j][k] = rand()% 10;
}
}

//Multiplication de A et B
for (i=0;i<N;i++)
{
for(k=0;k<P;k++)
{
s=0;
for(j=0;j<M;j++)
{
s=s+A[i][j]*B[j][k];
}

C[i][k] = s;
}
}

//Affichage Matrice A
printf("\nMatrice A \n");
for(i=0;i<N;i++)
{
printf("\n");
for(j=0;j<M;j++)
{
printf("%d ",A[i][j]);
}
}
//Affichage Matrice B
printf("\nMatrice B \n");
for(j=0;j<M;j++)
{
printf("\n");
for(k=0;k<P;k++)
{
printf("%d ",B[j][k]);

Mme Hajer BACCOUCH 10


}
}

//Affichage Matrice C = A*B


printf("\nMatrice C=A*B \n");
for(i=0;i<N;i++)
{
printf("\n");
for(k=0;k<P;k++)
{
printf("%d\t",C[i][k]);
}
}
}

Exercice 9 (Transposition d'une matrice)


Ecrire un programme qui effectue la transposition d'une matrice A de dimensions N et M en une
matrice B de dimensions M et N. Les dimensions M, N et la matrice A sont lus du clavier
La matrice transposée sera mémorisée dans une deuxième matrice B qui sera ensuite affichée.

La transposée de est

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
int M[100][100], TM[100][100];
int i,j,n, m;

//Saisie des nombre de lignes et de colonnes de A


do
{
printf("Donner n, m : ");
scanf("%d-%d", &n, &m);
}while(n<1||n>100||m<1||m>100);

srand(time(0));

//initialisation de M
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
M[i][j] = rand()% 10;
}
}

Mme Hajer BACCOUCH 11


printf("\Transposee de M \n");
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
TM[j][i]=M[i][j];
}
}

printf("\n\nAffichage Matrice M \n");


for(i=0;i<n;i++)
{
printf("\n");
for(j=0;j<m;j++)
{
printf("%d\t",M[i][j]);
}
}

printf("\n\nAffichage TM Transposee de la Matrice M \n");


for(i=0;i<m;i++)
{
printf("\n");
for(j=0;j<n;j++)
{
printf("%d\t",TM[i][j]);
}
}
}

Mme Hajer BACCOUCH 12

Vous aimerez peut-être aussi