home *** CD-ROM | disk | FTP | other *** search
- /*********************************************************************
- * CH09_12.C Addition de deux matrices *
- * En utilisant des tableaux de pointeurs *
- *********************************************************************/
-
- #include<stdio.h>
- #include<alloc.h>
-
- #define max_lignes 2 /* Le nombre maximum de lignes doit Ωtre connu.*/
-
- void LitInt( int*);
- void Initialise( int *t[], int, int);
- void Affiche( int *t[], int, int);
- void Addition( int *t0[], int *t1[], int *t2[], int, int);
-
- main( void)
- {
- int m= max_lignes, n= 3, i, /* m, n: dimensions des matrices */
- *tab0[max_lignes], *tab1[max_lignes], *tab2[max_lignes];
-
- for( i= 0; i< m; i++) /* allocation dynamique */
- {
- tab0[i]= ( int*) malloc( n* sizeof(int));
- tab1[i]= ( int*) malloc( n* sizeof(int));
- tab2[i]= ( int*) malloc( n* sizeof(int));
- }
-
- Initialise( tab1, m, n);
- Initialise( tab2, m, n);
-
- Addition( tab0, tab1, tab2, m, n);
-
- Affiche( tab0, m, n);
-
- for( i= 0; i< m; i++) /* libΘration de la mΘmoire */
- {
- free( tab0[i]);
- free( tab1[i]);
- free( tab2[i]);
- }
- }
-
- void Addition( int *t0[max_lignes],
- int *t1[max_lignes], int *t2[max_lignes], int p, int q)
- {
- int i, j;
-
- for( i= 0; i< p; i++)
- {
- for( j= 0; j< q; j++)
- {
- *( t0[i]+ j)= *( t1[i]+ j) + *( t2[i]+ j);
- }
- }
- }
-
- void Initialise( int *t[max_lignes], int p, int q)
- {
- int i, j;
-
- printf("\n Initialisation d'une matrice [%d][%d]\n", p, q);
-
- for( i= 0; i< p; i++)
- {
- for( j= 0; j< q; j++)
- {
- printf(" tab[%d][%d]= ", i, j);
- LitInt( t[i]+ j);
- }
- }
- }
-
- void Affiche( int *t[max_lignes], int p, int q)
- {
- int i, j;
-
- for( i= 0; i< p; i++)
- {
- for( j= 0; j< q; j++)
- {
- printf("\n tab[%d][%d]= %d", i, j, *(t[i]+ j));
- }
- }
- }
-
- void LitInt( int *entier)
- {
- double dble;
- do
- {
- while( scanf("%lf", &dble)!= 1)
- while( getchar() != '\n');
- while( getchar() != '\n');
- }
- while( dble< -32768.0 || dble> 32767.0);
- *entier= (int) dble;
- }
-
- /*
- Nous obtenons le mΩme affichage que celui du programme CH09_11.C
-
- */
-
-