Question 2: (back)
Modify program (1), above, to draw lines between the columns and rows. Use the hyphen ('-'), vertical bar ('|'), and plus sign ('+') characters to draw the lines. E.g.,
add | 15 | 16 | 17 | 18 | -----+----+----+----+----+ 15 | 30 | 31 | 32 | 33 | -----+----+----+----+----+ 16 | 31 | 32 | 33 | 34 | -----+----+----+----+----+ 17 | 32 | 33 | 34 | 35 | -----+----+----+----+----+ 18 | 33 | 34 | 35 | 36 | -----+----+----+----+----+
program Question2;
#include( "stdlib.hhf" );
#include( "excepts.hhf" );
static
a: int8;
b: int8;
c: int8;
d: int8;
e: int8;
cnt: int8 := 0;
cnt2: int8 := 0;
GoodInteger: boolean;
begin Question2;
repeat
mov( false, GoodInteger );
try
stdout.put( "Please enter a integer: " );
stdin.geti8();
mov( true, GoodInteger );
exception( ex.ConversionError );
stdout.put( "Illegal numeric value, please re-enter", nl );
exception( ex.ValueOutOfRange );
stdout.put( "Value is out of range, please re-enter", nl );
endtry;
until( GoodInteger );
mov( al, a );
mov( al, c );
repeat
mov( false, GoodInteger );
try
stdout.put( "Please enter another integer: " );
stdin.geti8();
mov( true, GoodInteger );
exception( ex.ConversionError );
stdout.put( "Illegal numeric value, please re-enter", nl );
exception( ex.ValueOutOfRange );
stdout.put( "Value is out of range, please re-enter", nl );
endtry;
if ( al < a) then
stdout.put( "Integer value is too low, please re-enter", nl );
mov( false, GoodInteger);
endif;
until( GoodInteger );
mov( al, b ); // Second Integer 'b'
sub( a, al ); // Subtract First from Second Integer
mov( al, d ); // Set subtracted answer to 'd'
// Output the first row
mov( b, al ); // set al = 'b'
stdout.newln();
stdout.put( "add | " );
while( c <= al ) do
stdout.put( c, " | " );
add( 1, c );
endwhile;
mov( a, al );
mov( al, c );
mov( b, al );
stdout.newln();
stdout.put( "-----+" );
while( c <= al ) do
stdout.put( "----+" );
add( 1, c );
endwhile;
// Output all other rows
mov( a, al );
mov( al, c );
mov( al, cnt2 );
mov( d, ah ); // Set ah = 'd'
mov( b, al );
while( cnt <= ah ) do
stdout.newln();
stdout.put( c, " | " );
mov( a, bl );
mov( bl, d );
while( cnt2 <= al ) do
mov( d, bl );
add( c, bl );
mov( bl, e );
stdout.put( e, " | " );
add( 1, d );
//stdout.put( cnt2 );
add( 1, cnt2 );
endwhile;
mov( a, bl );
mov( bl, cnt2 );
mov( b, bh );
stdout.newln();
stdout.put( "-----+" );
while( cnt2 <= bh ) do
stdout.put( "----+" );
add( 1, cnt2 );
endwhile;
add( 1, c );
add( 1, cnt );
mov( a, bl );
mov( bl, cnt2 );
endwhile;
end Question2;