Ver Mensaje Individual
  #3  
Antiguo 09-12-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Reputación: 24
seoane Va por buen camino
Si te he entendido bien, lo que tu necesitas es simplificar una fracción hasta que su numerador y denominador sean lo mas pequeños posible. Eso se consigue dividiendo ambos por su máximo común divisor.

Es decir, si tenemos la fracción 24/40, su máximo común divisor es 8 y la fracción simplificada es 3/5. Pues bien, aquí la única dificultad es calcular el mcd (máximo común divisor), pero esto ya nos lo resolvió nuestro amigo Euclides hace ya mucho tiempo.

Código Delphi [-]
function mcd(a,b: integer): integer;
var
  m: integer;
begin
  m:= a mod b;
  if m = 0 then
    Result:=  b
  else
    Result:= mcd(b,m);
end;

// Por ejemplo
var
  a,b,c: integer;
begin
  a:= 24;
  b:= 40;
  ShowMessage(Format('Original %d/%d',[a,b]));
  c:= mcd(a,b);
  a:= a div c;
  b:= b div c;
  ShowMessage(Format('Simplificada %d/%d',[a,b]));
end;
Responder Con Cita