with ada.text_io; use ada.text_io; with ada.integer_text_io; use ada.integer_text_io; procedure table3c is -- 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; procedure putRows(sInt, fInt, sPow, fPow: Integer) is tempInt: Integer; 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; procedure getData(sI, fI, sP, fP: out Integer) is begin loop put("Enter starting integer: "); get(sI); exit when sI > -1; put_line("Integer must be non-negative."); end loop; loop put("Enter ending integer: "); get(fI); exit when fI > sI; put_line("Ending integer must be larger than starting."); end loop; loop put("Enter starting power: "); get(sP); exit when sP > -1 put_line("Power must be non-negative."); end loop; loop put("Enter ending power: "); get(fP); exit when fP > sP; put_line("Ending power must be larger than starting."); end loop; end getData; startI, finishI: Integer; startPower, finishPower: Integer; begin getData(StartI, finishI, startPower, finishPower); new_line; putHeader(startPower, finishPower); putRows(startI, finishI, startPower, finishPower); end table3c;