home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 17 / CD_ASCQ_17_101194.iso / dos / prg / alb_c10 / chap_09 / ch09_11.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-09-08  |  2.3 KB  |  118 lines

  1. /*********************************************************************
  2. *  CH09_11.C                          Tableaux crΘΘs dynamiquement:*
  3. *                                                                    *
  4. *    Addition de deux matrices [ m, n] en utilisant des pointeurs *
  5. *********************************************************************/
  6.  
  7. #include<stdio.h>
  8. #include<alloc.h>     /* pour pouvoir utiliser la fonction malloc() */
  9.  
  10. void LitInt( int*);
  11. void Initialise( int*, int, int);
  12. void Affiche( int*, int, int);
  13. void Addition( int*, int*, int*, int, int);
  14.  
  15. main( void)
  16. {
  17.     int m= 2, n= 3,           /* m, n: dimensions des matrices */
  18.         *tab0, *tab1, *tab2;
  19.  
  20.     tab0= ( int*) malloc( m* n* sizeof(int));
  21.     tab1= ( int*) malloc( m* n* sizeof (int));
  22.     tab2= ( int*) malloc( m* n* sizeof(int));
  23.  
  24.     Initialise( tab1, m, n);
  25.     Initialise( tab2, m, n);       
  26.  
  27.     Addition( tab0, tab1, tab2, m, n);   
  28.  
  29.     Affiche( tab0, m, n);
  30.  
  31.     free( tab0);          /* libΘration de la mΘmoire allouΘe   */
  32.     free( tab1);
  33.     free( tab2);
  34. }
  35.  
  36. void Addition( int *ptr0, int *ptr1, int *ptr2, int p, int q)
  37. {
  38.       int i, j;
  39.  
  40.       for( i= 0; i< p; i++)
  41.       {
  42.           for( j= 0; j< q; j++)
  43.       {
  44.          *ptr0++=  *ptr1++ + *ptr2++;
  45.       }
  46.       }
  47. }
  48.  
  49. void Initialise( int *ptr, int p, int q)
  50. {
  51.       int i, j;
  52.  
  53.       printf("\n Initialisation d'une matrice [%d][%d]\n", p, q);
  54.  
  55.       for( i= 0; i< p; i++)
  56.       {
  57.           for( j= 0; j< q; j++)
  58.       {
  59.          printf(" tab[%d][%d]=  ", i, j);
  60.          LitInt( ptr++);
  61.       }
  62.       }
  63. }
  64.  
  65. void Affiche( int *ptr, int p, int q)
  66. {
  67.       int i, j;
  68.  
  69.       for( i= 0; i< p; i++)
  70.       {
  71.           for( j= 0; j< q; j++)
  72.       {
  73.          printf("\n tab[%d][%d]=  %d", i, j, *ptr++);
  74.       }
  75.       }
  76. }
  77.  
  78. void LitInt( int *entier)
  79. {
  80.     double dble;
  81.     do
  82.         {
  83.        while( scanf("%lf", &dble)!= 1)
  84.         while( getchar() != '\n');
  85.        while( getchar() != '\n');
  86.     }
  87.     while( dble< -32768.0 || dble> 32767.0);
  88.         *entier= (int) dble;
  89. }
  90.  
  91. /*
  92.  Initialisation d'une matrice [2][3]
  93.  tab[0][0]=  0
  94.  tab[0][1]=  1
  95.  tab[0][2]=  2
  96.  tab[1][0]=  3
  97.  tab[1][1]=  4
  98.  tab[1][2]=  5
  99.  
  100.  Initialisation d'une matrice [2][3]
  101.  tab[0][0]=  5
  102.  tab[0][1]=  4
  103.  tab[0][2]=  3
  104.  tab[1][0]=  2
  105.  tab[1][1]=  1
  106.  tab[1][2]=  0
  107.  
  108.  tab[0][0]=  5
  109.  tab[0][1]=  5
  110.  tab[0][2]=  5
  111.  tab[1][0]=  5
  112.  tab[1][1]=  5
  113.  tab[1][2]=  5                               */
  114.  
  115.  
  116.  
  117.  
  118.