Ethiopian multiplication: Difference between revisions
Content added Content deleted
No edit summary |
No edit summary |
||
Line 274: | Line 274: | ||
0001 000544 kept |
0001 000544 kept |
||
578 |
578 |
||
=={{header|ALGOL-M}}== |
|||
<lang algol> |
|||
BEGIN |
|||
INTEGER FUNCTION HALF(I); |
|||
INTEGER I; |
|||
BEGIN |
|||
HALF := I / 2; |
|||
END; |
|||
INTEGER FUNCTION DOUBLE(I); |
|||
INTEGER I; |
|||
BEGIN |
|||
DOUBLE := I * 2; |
|||
END; |
|||
% RETURN 1 IF EVEN, OTHERWISE 0 % |
|||
INTEGER FUNCTION EVEN(I); |
|||
INTEGER I; |
|||
BEGIN |
|||
EVEN := 1 - (I - 2 * (I / 2)); |
|||
END; |
|||
INTEGER FUNCTION ETHIOPIAN(I, J, SHOW); |
|||
INTEGER I, J, SHOW; |
|||
BEGIN |
|||
INTEGER P, YES; |
|||
YES := 1; |
|||
P := 0; |
|||
WHILE I >= 1 DO |
|||
BEGIN |
|||
IF EVEN(I) = 1 THEN |
|||
BEGIN |
|||
IF SHOW = YES THEN WRITE(I," ----", J); |
|||
END |
|||
ELSE |
|||
BEGIN |
|||
IF SHOW = YES THEN WRITE(I,J); |
|||
P := P + J; |
|||
END; |
|||
I := HALF(I); |
|||
J := DOUBLE(J); |
|||
END; |
|||
IF SHOW = YES THEN WRITE(" ="); |
|||
ETHIOPIAN := P; |
|||
END; |
|||
% EXERCISE THE FUNCTION % |
|||
INTEGER YES; |
|||
YES := 1; |
|||
WRITE(ETHIOPIAN(17,34,YES)); |
|||
END</lang> |
|||
{{out}} |
|||
<pre> |
|||
17 34 |
|||
8 ---- 68 |
|||
4 ---- 136 |
|||
2 ---- 272 |
|||
1 544 |
|||
= 578 |
|||
</pre> |
|||
=={{header|ALGOL W}}== |
=={{header|ALGOL W}}== |