Ethiopian multiplication: Difference between revisions

Modula-3
(→‎{{header|JavaScript}}: erroro in declaring multiples vars with var statment => Implied globals)
(Modula-3)
Line 584:
show( (17 ethiopicmult 34) );
end</lang>
 
=={{header|Modula-3}}==
{{trans|Ada}}
<lang modula3>MODULE Ethiopian EXPORTS Main;
 
IMPORT IO, Fmt;
 
PROCEDURE IsEven(n: INTEGER): BOOLEAN =
BEGIN
RETURN n MOD 2 = 0;
END IsEven;
 
PROCEDURE Double(n: INTEGER): INTEGER =
BEGIN
RETURN n * 2;
END Double;
 
PROCEDURE Half(n: INTEGER): INTEGER =
BEGIN
RETURN n DIV 2;
END Half;
 
PROCEDURE Multiply(a, b: INTEGER): INTEGER =
VAR
temp := 0;
plier := a;
plicand := b;
BEGIN
WHILE plier >= 1 DO
IF NOT IsEven(plier) THEN
temp := temp + plicand;
END;
plier := Half(plier);
plicand := Double(plicand);
END;
RETURN temp;
END Multiply;
 
BEGIN
IO.Put("10 times 5 = " & Fmt.Int(Multiply(10, 5)) & "\n");
END Ethiopian.</lang>
 
=={{header|Objective-C}}==
Anonymous user