How to resolve the algorithm Ethiopian multiplication step by step in the XPL0 programming language
Published on 12 May 2024 09:40 PM
How to resolve the algorithm Ethiopian multiplication step by step in the XPL0 programming language
Table of Contents
Problem Statement
Ethiopian multiplication is a method of multiplying integers using only addition, doubling, and halving.
Method:
For example: 17 × 34 Halving the first column: Doubling the second column: Strike-out rows whose first cell is even: Sum the remaining numbers in the right-hand column: So 17 multiplied by 34, by the Ethiopian method is 578.
The task is to define three named functions/methods/procedures/subroutines:
Use these functions to create a function that does Ethiopian multiplication.
Let's start with the solution:
Step by Step solution about How to resolve the algorithm Ethiopian multiplication step by step in the XPL0 programming language
Source code in the xpl0 programming language
include c:\cxpl\codes; \intrinsic 'code' declarations
func Halve(N); \Return half of N
int N;
return N>>1;
func Double(N); \Return N doubled
int N;
return N<<1;
func IsEven(N); \Return 'true' if N is an even number
int N;
return (N&1)=0;
func EthiopianMul(A, B); \Multiply A times B using Ethiopian method
int A, B;
int I, J, S, Left(100), Right(100);
[Left(0):= A; Right(0):= B; \1. write numbers to be multiplied
I:= 1; \2. repeatedly halve number on left
repeat A:= Halve(A);
Left(I):= A; I:= I+1;
until A=1;
J:= 1; \3. repeatedly double number on right
repeat B:= Double(B);
Right(J):= B; J:= J+1;
until J=I; \stop where left column = 1
for J:= 0 to I-1 do \4. discard right value if left is even
if IsEven(Left(J)) then Right(J):= 0;
S:= 0; \5. sum remaining values on right
for J:= 0 to I-1 do
S:= S + Right(J);
for J:= 0 to I-1 do \show this insanity
[IntOut(0, Left(J)); ChOut(0, 9\tab\); IntOut(0, Right(J)); CrLf(0)];
Text(0, " --------
");
return S; \sum = product
];
int Product;
[Product:= EthiopianMul(17, 34);
ChOut(0, 9); IntOut(0, Product); CrLf(0); CrLf(0);
Product:= EthiopianMul(1234, 5678);
ChOut(0, 9); IntOut(0, Product); CrLf(0);
]
You may also check:How to resolve the algorithm Sorting algorithms/Strand sort step by step in the PureBasic programming language
You may also check:How to resolve the algorithm Sockets step by step in the Smalltalk programming language
You may also check:How to resolve the algorithm Loops/For with a specified step step by step in the Action! programming language
You may also check:How to resolve the algorithm Angle difference between two bearings step by step in the Maple programming language
You may also check:How to resolve the algorithm Idiomatically determine all the characters that can be used for symbols step by step in the REXX programming language