Solution de La Série N° 2
Solution de La Série N° 2
Solution de La Série N° 2
Série de TP: 01
Département de sciences techniques. Semestre: 02
présenté par: Dr Zenati SORAYA
Chapitre 2 :
Corrigé du TP ( Série n° 2)
Exercice 1
1.But de l’exercice: comparaison entre un programme avec et sans procédures et fonctions
a. Donner la solution à une (petite) partie bien définie d'un problème plus complexe.
b. Meilleure lisibilité
c. Diminution du risque d'erreurs
d. Possibilité de tests sélectifs
e. Dissimulation des méthodes : connaitre l’effet seulement sans les détails.
f. Réutilisation de modules déjà existants
g. Simplicité de l'entretien
h. Favorisation du travail en équipe.
2. Solution1:
Sans l’utilisation des fonctions et des procédures.
1 #include<stdio.h>
2 #include<stdlib.h>
3 main ()
4 {
5 float A[100][100], B[100][100],Matsom[100][100], Matdif[100][100];
6 int i,j,M,N;
7 printf ("ce programme calcule la somme et la difference de deux matrices A et B \n dont la
taille est inferieur à 100. \n Les deux matrices doivent avoir les memes dimensions
\n\n" );
8 printf ( "Donner la taille des matrices A, B \n" );
9 printf ( " Nombre de lignes : " );
10 scanf ( "%d" , & N);
11 printf ( " \n nombre de colonnes : " );
12 scanf ( "%d" , & M);
Exercice 3
But de l’exercice : Eviter la répétition du même code s’il est utilisé plusieurs fois dans le
même programme, faire la comparaison entre la fonction récursive et la fonction itérative et
la procédure qui appelle une autre fonction. La solution est donnée pour 3 vecteurs.
#include<stdio.h>
#include<stdlib.h>
int i;
void lirevecteur ( int x [], int n )
{ for (i=0 ; i<n ; i++)
{ printf ( "\n Donner l'element (%d) : " , i+1);
scanf ("%d" ,&x[i]);
}
}
void affiche ( int tab[], int n)
{
for ( i=0;i<n;i++)
printf ( "tab[%d] = %d \n" , i , tab[i] );
printf ( "\n" );
}
bool tablo_ego (int t1[], int t2[], int n, int i) /* fonction récursive*/
{
bool result;
if ( i == n-1 ) result = (t1[i]==t2[i]);
else result = (t1[i]==t2[i]) && tablo_ego (t1, t2, n, i+1);
return result;
}
void compare_rec (int t1[], int t2[], int n)
{
if (tablo_ego (t1, t2, n, 0)) printf ( "sont egaux.\n" );
else printf ("sont differents.\n");
}
void compare_iter ( int t1[], int t2[], int n )
{
int i;
bool pas_fini=1;
for ( i=0; i<n && pas_fini ; i++)
if ( t1[i]!=t2[i]) pas_fini=0;
if (pas_fini) printf ( "sont egaux.\n" );
else printf ("sont differents.\n" );
}
main ( )
{int N, A[30], B[30],C[30];
printf ( "Donner la longueur du vecteur : " );
scanf ( "%d" ,&N);
printf ( "Le tableau A\n" );lirevecteur (A,N ); printf ( "\n" );
printf ( "Le tableau B \n" );lirevecteur (B,N ); printf ( "\n" );
printf ( "Le tableau C \n" );lirevecteur (C,N ); printf ( "\n" );
system ( "cls" );
printf ( "Voici le tableau A \n" ) ; affiche (A , N);
printf ( "Voici le tableau B \n" ) ; affiche (B , N);
printf ( "Voici le tableau C \n" ) ; affiche (C , N);