sábado, 19 de enero de 2008

Maximo Comun Divisor en lenguaje ADA

function MCD (A, B : Positive) return Positive is
Mayor, Menor, Resta : Integer;
begin
-- Calculos inciales del primer Mayor, Menor y Resta
Mayor := A;
Menor := B;
Ordenar (Mayor, Menor);
Resta := Mayor - Menor;
-- Se continúa hasta que la resa da cero
while Resta > 0 loop
Mayor := Resta;
Ordenar (Mayor, Menor);
Resta := Mayor - Menor;
end loop;
return Mayor;
end MCD;

La funcion ordenar seria la siguiente:

procedure Ordenar (X, Y : in out Integer) is
Aux : Integer;
begin
-- Se mira si hay que intercambiar los parámetros
if X < Y then
Aux := X;
X := Y;
Y := Aux;
end if;
end Ordenar;