home *** CD-ROM | disk | FTP | other *** search
/ Chip 1995 March / CHIP3.mdf / programm / prog4 / answers / ch19_2.ada < prev    next >
Encoding:
Text File  |  1991-07-01  |  2.6 KB  |  105 lines

  1.                        -- Chapter 19 - Programming exercise 2
  2. with Text_IO;
  3. use Text_IO;
  4.  
  5. procedure CH19_2 is
  6.  
  7.    package Int_IO is new Text_IO.Integer_IO(INTEGER);
  8.    use Int_IO;
  9.  
  10.    type ARY_INT is array(1..6) of INTEGER;
  11.  
  12.    Crowd, Group1, Group2    : ARY_INT;
  13.  
  14.    function "+"(In_Array1, In_Array2 : ARY_INT) return ARY_INT is
  15.    Temp_Array : ARY_INT;
  16.    begin
  17.       for Index in ARY_INT'RANGE loop
  18.          Temp_Array(Index) := In_Array1(Index) + In_Array2(Index);
  19.       end loop;
  20.       return Temp_Array;
  21.    end "+";
  22.  
  23.    function "-"(In_Array1, In_Array2 : ARY_INT) return ARY_INT is
  24.    Temp_Array : ARY_INT;
  25.    begin
  26.       for Index in ARY_INT'RANGE loop
  27.          Temp_Array(Index) := In_Array1(Index) - In_Array2(Index);
  28.       end loop;
  29.       return Temp_Array;
  30.    end "-";
  31.  
  32.    function "*"(In_Array1, In_Array2 : ARY_INT) return ARY_INT is
  33.    Temp_Array : ARY_INT;
  34.    begin
  35.       for Index in ARY_INT'RANGE loop
  36.          Temp_Array(Index) := In_Array1(Index) * In_Array2(Index);
  37.       end loop;
  38.       return Temp_Array;
  39.    end "*";
  40.  
  41.    function "/"(In_Array1, In_Array2 : ARY_INT) return ARY_INT is
  42.    Temp_Array : ARY_INT;
  43.    begin
  44.       for Index in ARY_INT'RANGE loop
  45.          Temp_Array(Index) := In_Array1(Index) / In_Array2(Index);
  46.       end loop;
  47.       return Temp_Array;
  48.    end "/";
  49.  
  50.    function "mod"(In_Array1, In_Array2 : ARY_INT) return ARY_INT is
  51.    Temp_Array : ARY_INT;
  52.    begin
  53.       for Index in ARY_INT'RANGE loop
  54.          Temp_Array(Index) := In_Array1(Index) mod In_Array2(Index);
  55.       end loop;
  56.       return Temp_Array;
  57.    end "mod";
  58.  
  59.    function "rem"(In_Array1, In_Array2 : ARY_INT) return ARY_INT is
  60.    Temp_Array : ARY_INT;
  61.    begin
  62.       for Index in ARY_INT'RANGE loop
  63.          Temp_Array(Index) := In_Array1(Index) rem In_Array2(Index);
  64.       end loop;
  65.       return Temp_Array;
  66.    end "rem";
  67.  
  68. begin
  69.  
  70.    Group1 := (12, 17, -1, 3, -100, 5);
  71.    Group2 := (13, -2, 22, 1, 124, -12);
  72.  
  73.    Crowd := Group1 + Group2;
  74.    for Index in ARY_INT'RANGE loop
  75.       Put(Group1(Index));
  76.       Put(Group2(Index));
  77.       Put(Crowd(Index));
  78.       New_Line;
  79.    end loop;
  80.  
  81.    Crowd := Group1 - Group2;
  82.    Crowd := Group1 * Group2;
  83.    Crowd := Group1 / Group2;
  84.    Crowd := Group1 mod Group2;
  85.    Crowd := Group1 rem Group2;
  86.  
  87. end CH19_2;
  88.  
  89.  
  90.  
  91.  
  92. -- Result of execution
  93.  
  94. --     12    13    25
  95. --     17    -2    15
  96. --     -1    22    21
  97. --      3     1     4
  98. --   -100  1242  1142
  99. --      5   -12    -7
  100.  
  101. -- Note; The fifth value of Group2 was changed to prevent a
  102. --       numeric_error on a small machine.
  103.  
  104.  
  105.