home *** CD-ROM | disk | FTP | other *** search
/ Programmer's ROM - The Computer Language Library / programmersrom.iso / ada / piwg / z000023.ada < prev    next >
Encoding:
Text File  |  1988-05-03  |  2.7 KB  |  74 lines

  1. with GENSORTSH ;
  2. with Z000021 ;
  3. with TEXT_IO ; use TEXT_IO ;
  4.  
  5. procedure Z000023 is -- a test of five types as elements of arrays
  6.                   -- using the same generic sort routine
  7.  
  8.    type INT_ARRAY is array( INTEGER range <> ) of INTEGER ;
  9.    INT_DATA : INT_ARRAY(1..4) := ( 3, 4, 1, 2) ;
  10.  
  11.    type FLT_ARRAY is array( INTEGER range <> ) of FLOAT ;
  12.    FLT_DATA : FLT_ARRAY(1..4) := ( 3.0, 4.0, 1.0, 2.0) ;
  13.  
  14.    subtype MY_STRING is STRING(1..3) ;
  15.    type STR_ARRAY is array( INTEGER range <> ) of MY_STRING ;
  16.    STR_DATA : STR_ARRAY(1..4) := ( "CCC", "DDD", "AAA", "BBB") ;
  17.  
  18.    type MY_ENUM is ( FIRST , SECOND, THIRD, FOURTH ) ;
  19.    type ENU_ARRAY is array( INTEGER range <> ) of MY_ENUM ;
  20.    ENU_DATA : ENU_ARRAY(1..4) := ( THIRD, FOURTH, FIRST, SECOND ) ;
  21.  
  22.    type MY_FIXED is delta 0.01 range - 20.0 .. 20.0 ;
  23.    type FIX_ARRAY is array ( INTEGER range <> ) of MY_FIXED ;
  24.    FIX_DATA : FIX_ARRAY(1..4) :=( 3.1, 4.1, 1.1, 2.1 ) ;
  25.  
  26.    package INT_SORT_UP is new GENSORTSH(INTEGER,INT_ARRAY) ; 
  27.    package INT_SORT_DN is new GENSORTSH(INTEGER,INT_ARRAY,"<") ; 
  28.    package FLT_SORT_UP is new GENSORTSH(FLOAT,FLT_ARRAY) ; 
  29.    package FLT_SORT_DN is new GENSORTSH(FLOAT,FLT_ARRAY,"<") ; 
  30.    package STR_SORT_UP is new GENSORTSH(MY_STRING,STR_ARRAY) ; 
  31.    package STR_SORT_DN is new GENSORTSH(MY_STRING,STR_ARRAY,"<") ; 
  32.    package ENU_SORT_UP is new GENSORTSH(MY_ENUM,ENU_ARRAY) ; 
  33.    package ENU_SORT_DN is new GENSORTSH(MY_ENUM,ENU_ARRAY,"<") ; 
  34.    package FIX_SORT_UP is new GENSORTSH(MY_FIXED,FIX_ARRAY) ; 
  35.    package FIX_SORT_DN is new GENSORTSH(MY_FIXED,FIX_ARRAY,"<") ; 
  36.  
  37.    package INT_IO  is new INTEGER_IO(INTEGER) ; use INT_IO ;
  38.    package FLT_IO  is new FLOAT_IO(FLOAT) ; use FLT_IO ;
  39.    package ENU_IO  is new ENUMERATION_IO(MY_ENUM) ; use ENU_IO ;
  40.    package FIX_IO  is new FIXED_IO(MY_FIXED) ; use FIX_IO ;
  41.  
  42. begin
  43.    INT_SORT_UP.SHSORT(INT_DATA) ;
  44.    FLT_SORT_UP.SHSORT(FLT_DATA) ;
  45.    STR_SORT_UP.SHSORT(STR_DATA) ;
  46.    ENU_SORT_UP.SHSORT(ENU_DATA) ;
  47.    FIX_SORT_UP.SHSORT(FIX_DATA) ;
  48.  
  49.    PUT_LINE(" UP SORTED DATA ") ;
  50.    for I in  INT_DATA'RANGE  loop
  51.      PUT(INT_DATA(I)); PUT(' ');
  52.      PUT(FLT_DATA(I)); PUT(' ');
  53.      PUT(STR_DATA(I)); PUT(' ');
  54.      PUT(ENU_DATA(I)); PUT(' ');
  55.      PUT(FIX_DATA(I)); NEW_LINE;
  56.    end loop ;
  57.  
  58.    INT_SORT_DN.SHSORT(INT_DATA) ;
  59.    FLT_SORT_DN.SHSORT(FLT_DATA) ;
  60.    STR_SORT_DN.SHSORT(STR_DATA) ;
  61.    ENU_SORT_DN.SHSORT(ENU_DATA) ;
  62.    FIX_SORT_DN.SHSORT(FIX_DATA) ;
  63.  
  64.    PUT_LINE(" DOWN SORTED DATA ") ;
  65.    for I in  INT_DATA'RANGE  loop
  66.      PUT(INT_DATA(I)); PUT(' ');
  67.      PUT(FLT_DATA(I)); PUT(' ');
  68.      PUT(STR_DATA(I)); PUT(' ');
  69.      PUT(ENU_DATA(I)); PUT(' ');
  70.      PUT(FIX_DATA(I)); NEW_LINE;
  71.    end loop ;
  72.    Z000021 ;
  73. end Z000023 ;
  74.