procedure Add
var numerator12, numerator22, denominator, sumnumerator
: int := 0
var numlength1, numlength2, denlength1, denlength2, gcdlength, spacenum1, spacenum2, spaceden1, spaceden2, spacegnum, spacegden, numorden1, numorden2, gcdor, gcdnumlength, gcddenlength
: int := 0
numerator12
:= numerator1
* denominator2
numerator22
:= numerator2
* denominator1
denominator
:= denominator1
* denominator2
sumnumerator
:= numerator12 + numerator22
GCD
(sumnumerator, denominator
) %GCD
var gcdnum
: int := sumnumerator
div gcd
var gcdden
: int := denominator
div gcd
numlength1
:= length (intstr (numerator1
)) %finds the length of first numerator
numlength2
:= length (intstr (numerator2
)) %length of second numerator
denlength1
:= length (intstr (denominator1
)) %length of first denominator
denlength2
:= length (intstr (denominator2
)) %length of second denominator
gcdlength
:= length (intstr (gcdnum
)) %length of numerator of result
gcdnumlength
:= gcdlength
%length of numerator of result (alternate)
gcddenlength
:= length (intstr (gcdden
)) %length of denominator of result
put "**************************** ADDITION **************************"
put ""
put "The sum is: "
put ""
%%%%%%%%%%%%%%%%%%% spaces %%%%%%%%%%%%%%
for i
: 1 .. numlength1
%adds spaces for num of second fraction
spacenum1
:= spacenum1 +
1
end for
for i
: 1 .. denlength1
%adds spaces for den of second fraction
spaceden1
:= spaceden1 +
1
end for
for i
: 1 .. numlength2
%adds spaces for num of second fraction
spacenum2
:= spacenum2 +
1
end for
for i
: 1 .. denlength2
%adds spaces for den of second fraction
spaceden2
:= spaceden2 +
1
end for
for i
: 1 .. gcdnumlength
%adds spaces for num of result
spacegnum
:= spacegnum +
1
end for
for i
: 1 .. gcddenlength
%adds spaces for den of result
spacegden
:= spacegden +
1
end for
if denlength1 > numlength1
then %adds spaces for num of second fraction
spacenum1
:= spacenum1 + denlength1 +
1 - numlength2
end if
if denlength1 < numlength1
then %adds spaces for den of second fraction
spaceden1
:= spaceden1 + numlength1 +
1 - denlength2
end if
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%% outputs result %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
put numerator1, numerator2
: 5 + spacenum1 + spacenum2 - numlength1, gcdnum
: 4 + spacegnum - numlength2 + spacenum2
if numlength1 >= denlength1
then
numorden1
:= numlength1
elsif denlength1 > numlength1
then
numorden1
:= denlength1
end if
if numlength2 >= denlength2
then
numorden2
:= numlength2
elsif denlength2 > numlength2
then
numorden2
:= denlength2
end if
if gcdnumlength >= gcddenlength
then
gcdor
:= gcdnumlength
elsif gcddenlength > gcdnumlength
then
gcdor
:= gcddenlength
end if
for i
: 1 .. numorden1 -
1
put "-" ..
end for
put "-" : 3,
"+" : 3 ..
for i
: 1 .. numorden2 -
1
put "-" ..
end for
put "-" : 3,
"=" : 2 ..
for i
: 1 .. gcdor -
1
put "-" ..
end for
put "-"
put denominator1, denominator2
: 5 + spaceden1 + spaceden2 - denlength1, gcdden
: 3 + spacegden - denlength2 + spaceden2 + spacenum2
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
end Add