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

  1. /*********************************************************************
  2. *  CH14_03.C                   Allocation de mΘmoire α un tableau  *
  3. *********************************************************************/
  4.  
  5. #include<stdio.h>
  6. #include<alloc.h>                  /* pour malloc() et free()  */
  7. #include<process.h>                /* pour exit()                */
  8.  
  9. void LitU( unsigned*);
  10. void LitDble( double*);
  11. void LitTab( double*, unsigned);
  12. void EcritTab( double*, unsigned);
  13.  
  14. main( void)
  15. {
  16.     double *tab;                  /* Nom du tableau           */
  17.     unsigned n;               /* Dimension du tableau     */
  18.  
  19.     printf(" Entrez la dimension du tableau: ");
  20.     LitU( &n);
  21.  
  22.     tab= ( double*) malloc( n* sizeof( double) );
  23.     if( tab== NULL)
  24.       {
  25.          printf("\n La mΘmoire disponible est insuffisante!\n");
  26.          exit( 1);
  27.       }
  28.  
  29.     LitTab( tab, n);
  30.     EcritTab( tab, n);
  31.  
  32.     free( tab); 
  33. }
  34.  
  35. void LitTab( double *tableau, unsigned dim_tab)
  36. {
  37.     unsigned i;
  38.     double *ptr;
  39.     ptr= tableau; 
  40.     printf("\n (tableau)= \n");
  41.     for( i= 0; i< dim_tab; i++)
  42.     {     printf("\t   [%u]= ", i);
  43.         LitDble( ptr++);
  44.         }
  45. }
  46.     
  47. void EcritTab( double *tableau, unsigned dim_tab)
  48. {
  49.     unsigned i;
  50.     double *ptr;
  51.     ptr= tableau; 
  52.     printf("\n (tableau)= ");
  53.     for( i= 0; i< dim_tab; i++)
  54.       printf("\n\t   [%u]= %lf", i, *( ptr++));
  55. }
  56.  
  57. void LitU( unsigned* entier_u)
  58. {
  59.     double dble;
  60.     do
  61.     {
  62.        while( scanf("%lf", &dble)!= 1)
  63.         while( getchar() != '\n');
  64.        while( getchar() != '\n');
  65.     }
  66.     while( dble< 0.0 || dble> 65535.0);
  67.     *entier_u= ( unsigned) dble;
  68. }
  69.  
  70. void LitDble( double *reel)
  71. {
  72.     while( scanf("%lf", reel)!= 1)
  73.         while( getchar() != '\n');
  74.     while( getchar() != '\n');
  75. }
  76.