Ethiopian multiplication: Difference between revisions
Content added Content deleted
(→{{header|Java}}: I can;t believe it went that long with no one catching this error, added negative check to first version) |
(Added Object Pascal) |
||
Line 1,541: | Line 1,541: | ||
} |
} |
||
}</lang> |
}</lang> |
||
=={{header|Object Pascal}}== |
|||
multiplication.pas: |
|||
<lang pascal>unit Multiplication; |
|||
interface |
|||
function Double(Number: Integer): Integer; |
|||
function Halve(Number: Integer): Integer; |
|||
function Even(Number: Integer): Boolean; |
|||
function Ethiopian(NumberA, NumberB: Integer): Integer; |
|||
implementation |
|||
function Double(Number: Integer): Integer; |
|||
begin |
|||
result := Number * 2 |
|||
end; |
|||
function Halve(Number: Integer): Integer; |
|||
begin |
|||
result := Number div 2 |
|||
end; |
|||
function Even(Number: Integer): Boolean; |
|||
begin |
|||
result := Number mod 2 = 0 |
|||
end; |
|||
function Ethiopian(NumberA, NumberB: Integer): Integer; |
|||
begin |
|||
result := 0; |
|||
while NumberA >= 1 do |
|||
begin |
|||
if not Even(NumberA) then |
|||
result := result + NumberB; |
|||
NumberA := Halve(NumberA); |
|||
NumberB := Double(NumberB) |
|||
end |
|||
end; |
|||
begin |
|||
end.</lang> |
|||
ethiopianmultiplication.pas: |
|||
<lang pascal>program EthiopianMultiplication; |
|||
uses |
|||
Multiplication, sysutils; |
|||
begin |
|||
WriteLn('17 * 34 = ', IntToStr(Ethiopian(17, 34))) |
|||
end.</lang> |
|||
Output: |
|||
<lang pascal>17 * 34 = 578</lang> |
|||
=={{header|Objective-C}}== |
=={{header|Objective-C}}== |