Jump to content

Ethiopian multiplication: Difference between revisions

Added Object Pascal
(→‎{{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:
}
}</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}}==
Anonymous user
Cookies help us deliver our services. By using our services, you agree to our use of cookies.