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;