Vous êtes sur la page 1sur 5

Université Abdelmalek Essaadi 2015/16

Faculté des sciences et Techniques- Tanger M. AIT KBIR


Département Génie Informatique
Tronc Commun LST / GEGM/S3 : G II-3
Algo. et Prog. 2

TD3(Correction : exercices 3 et 4)

Exercice 1 : Exercice 3: Soit matrix1 et matrix2 deux matrices à valeurs réelles de taille
maximale NxM. Saisir et afficher les éléments de matrix1 et matrix2. Calculer puis d’afficher
la matrice matrix3 qui contient le résultat des opérations suivantes :

Correction
#include <stdio.h>
#include <conio.h>

#define NLMAX 50
#define NCMAX 50

int main(){
int nLignes1, nColonnes1, nLignes2, nColonnes2,nLignes3, nColonnes3;
int i,j,k;
float matrix1[NLMAX][NCMAX], matrix2[NLMAX][NCMAX],matrix3[NLMAX][NCMAX];

/* Saisie de la dimension de la matrice avec vérification */


printf("\nSaisie de la taille de la matrice 1 :\n");
do{ printf("Entrez le nombre des lignes(0<...<=%d) : ",NLMAX);
scanf("%d",&nLignes1);
} while(nLignes1<=0 || nLignes1>NLMAX);

printf("\n");
do{ printf("Entrez le nombre des colonnes(0<...<=%d) : ",NCMAX);
scanf("%d",&nColonnes1);
}while (nColonnes1<=0 || nColonnes1>NCMAX);

printf("\nSaisie des éléments de la matrice 1 :\n");


/* Saisie des éléments de la matrice */
for ( i=0;i<nLignes1;i++)
for ( j=0;j<nColonnes1;j++){
printf("[%d][%d] = ",i+1,j+1);
scanf("%f",&matrix1[i][j]);
}

printf("\nSaisie de la taille de la matrice 2 :\n");


do{ printf("Entrez le nombre des lignes(0<...<=%d) : ",NLMAX);
scanf("%d",&nLignes2);
} while(nLignes2<=0 || nLignes2>NLMAX);
printf("\n");
do{
printf("Entrez le nombre des colonnes(0<...<=%d) : ",NCMAX);
scanf("%d",&nColonnes2);
} while (nColonnes2<=0 || nColonnes2>NCMAX);

printf("\nSaisie des éléments de la matrice 2 :\n");


/* Saisie des éléments de la matrice */
for ( i=0;i<nLignes2;i++)
for ( j=0;j<nColonnes2;j++){
printf("[%d][%d] = ",i+1,j+1);
scanf("%f",&matrix2[i][j]);
}

/* Affichage de la matrice 1 */
printf("\n Matrice 1 :");
for ( i=0;i<nLignes1;i++){
printf("\n");
for ( j=0;j<nColonnes1;j++)
printf("\t%4.2f",matrix1[i][j]);
}

/* Affichage de la matrice 2*/


printf("\n Matrice 2 :");
for ( i=0;i<nLignes2;i++){
printf("\n");
for ( j=0;j<nColonnes2;j++)
printf("\t%4.2f",matrix2[i][j]);
}
/************************************* a-**************************************/
/* L’addition de matrix1 et matrix2 */
printf("\n Calcul de l'addition des deux matrices : \n");

/* Le test est vrai si les deux matrices sont identiques */


if((nLignes1==nLignes2)&&(nColonnes1==nColonnes2)){
nLignes3 = nLignes1;
nColonnes3=nColonnes1;

for ( i=0;i<nLignes3;i++)
for ( j=0;j<nColonnes3;j++)
matrix3[i][j] = matrix1[i][j]+ matrix2[i][j];

/* Affichage de la matrice 2*/


printf("\n Matrice 3 :");
for ( i=0;i<nLignes3;i++){
printf("\n");
for ( j=0;j<nColonnes3;j++)
printf("\t%4.2f",matrix3[i][j]);
}
}
else printf("\n Erreur : Matrices de tailles différentes.");

/************************************* b-**************************************/
/* Le produit de matrix1 et matrix2 */
printf("\n Calcul du produit des deux matrices : \n");

ème
/* Le test est vrai si le nombre de colonnes de la 1ère matrice est égal au nombre de lignes de la 2 */
if(nLignes2==nColonnes1){
nLignes3 = nLignes1;
nColonnes3 = nColonnes2;

for ( i=0;i<nLignes3;i++)
for ( j=0;j<nColonnes3;j++){
matrix3[i][j] = 0.0;
for ( k=0;k<nColonnes1;k++)
matrix3[i][j] += matrix1[i][k]*matrix2[k][j];
}

/* Affichage de la matrice 3*/


printf("\n Matrice 3 :");
for ( i=0;i<nLignes3;i++){
printf("\n");
for ( j=0;j<nColonnes3;j++)
printf("\t%4.2f",matrix3[i][j]);
}
}
else printf("\n Erreur : dimensions non valides. ");

/************************************* c-**************************************/
/* Le Transposé de matrix1 */
printf("\n Calcul du Transposé de la matrice 1 : \n");
nLignes3 = nColonnes1;
nColonnes3 = nLignes1;

for ( i=0;i<nLignes3;i++)
for ( j=0;j<nColonnes3;j++)
matrix3[i][j] = matrix1[j][i];

printf("\n Matrice 3 :");


for ( i=0;i<nLignes3;i++){
printf("\n");
for ( j=0;j<nColonnes3;j++)
printf("\t%4.2f",matrix3[i][j]);
}

getch(); return 0;
}
Exercice 4: Ecrire un programme en langage C qui fait la saisie d’un texte fourni au clavier,
de taille maximale 256 caractères. Puis, réalise les opérations suivantes :

Correction
/************************************* a-**************************************/
Calcul et affichage du nombre d’occurrences de toutes les lettres de l’alphabet.

#include <stdio.h>
#include <conio.h>

int main(){
char str[101], car;
/* Dans ce tableau le nombre de 'a' et 'A' est dans nbreCar[0],
le nombre de 'b' et 'B' est dans nbreCar[1] … */
int i=0, indice ,nbreCar[26];

/* Toutes les entrées sont initialisées à 0*/


for(i=0;i<26;i++)
nbreCar[i]=0;

printf("\n Tapez du texte : ");


gets(str);

for(i=0;i<strlen(str);i++){

/* Convertir le caratactère str[i], s'il est en miniscule */


if(str[i]>='a' && str[i]<='z')
str[i]-=32;

/* Prendre en compte uniquement les caractères de l'alphabet */


if(str[i]>='A' && str[i]<='Z'){
/* Calcul de l’indice du compteur qui correspond au caractère dans le tableau */
indice = str[i]-'A';
nbreCar[indice]++;
}
}
printf("\nLe texte contient : ");

for(i=0;i<26;i++)
printf("\n %c/%c : %d",'A'+i, 'A'+i+32,nbreCar[i]);

getch();
return 0;
}
/************************************* b-**************************************/
Suppression de toutes les occurrences d’un caractère tapé au clavier. Puis, affichage du texte
résultat.

#include <stdio.h>
#include <conio.h>

int main(){
char str[101], car;
int i,j, nbreCar=0;

printf("\n Tapez du texte : ");


gets(str);

printf("\n Tapez le caractère à chercher : ");


car = getchar();

/* Parcourir la chaine de caractères*/


i=0;
while(str[i]) /* str[i] est nul pour la fin de la chaine */
if(str[i]==car){
/* Décaler tous les caractères qui viennent après str[i] */
j=i;
do{
str[j]=str[j+1];
j++;
}while(str[j]);
}
else i++;

puts(str);

getch();
return 0;
}