Anonymous user
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}}==
|