with ada.text_io; use ada.text_io; with ada.integer_text_io; use ada.integer_text_io; procedure table3a is -- Outputs the header for the table -- Outputs header for first column plus one column for each integer -- in the range sPow .. fPow -- Precondition: sPow, fPow in 1 .. 99 procedure putHeader(sPow, fPow: Integer) is begin -- First column put(" I"); -- Columns for powers for i in sPow .. fPow loop if i in 1 .. 9 then put(" I**"); else put(" I**"); end if; put(i, 1); end loop; new_line; -- Add one to fPow to account for column for I for i in sPow .. fPow + 1 loop put("-----------"); end loop; new_line; end putHeader; -- Outputs all of the rows of the table -- Outputs one row for each integer in range sInt .. fInt -- Outputs one column for each integer in range sPow .. fPow procedure putRows(sInt, fInt, sPow, fPow: Integer) is tempInt: Integer; -- Local variable for putRows begin for i in sInt .. fInt loop put(i); for j in sPow .. fPow loop tempInt := i ** j; put(tempInt); end loop; new_line; end loop; end putRows; -- Variables for main routine startI: Integer := 2; finishI: Integer := 11; startPower: Integer := 2; finishPower: Integer := 4; begin putHeader(startPower, finishPower); putRows(startI, finishI, startPower, finishPower); end table3a;