Ethiopian multiplication: Difference between revisions
Content added Content deleted
(→{{header|JavaScript}}: erroro in declaring multiples vars with var statment => Implied globals) |
(Modula-3) |
||
Line 584: | Line 584: | ||
show( (17 ethiopicmult 34) ); |
show( (17 ethiopicmult 34) ); |
||
end</lang> |
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}}== |
=={{header|Objective-C}}== |