Fraccion+irreducible

=__**Calcular la fracción irreducible**__=

> Realizar un programa que calcule la fracción irreducible equivalente a una fracción introducida por teclado. El programa leerá desde el teclado el numerador y denominador de la fracción (números enteros positivos), y deberá escribir el resultado en forma de fracción, tal como se muestra en el ejemplo siguiente: code 330   55         --- = ---         126    21 code

NOTA.‑ Se deberá utilizar un subprograma que calcule el Máximo Común Divisor de dos números, NUM1 y NUM2, utilizando el siguiente algoritmo iterativo:

1.‑ Si los números NUM1 y NUM2 son iguales ir al punto 4. 2.‑ Al mayor de ellos restarle el menor. 3.‑ Volver al punto 1. 4.‑ El Máximo Común Divisor es el valor NUM1 (NUM1 = NUM2).

code format="pascal" PROGRAM subpr_8 ;

PROCEDURE LeerFraccion (VAR iNumerador, iDenominador : Integer); BEGIN Write ('  Numerador: ') ; Readln (iNumerador) ; Write ('Denominador: ') ; Readln (iDenominador) END ; { LeerFraccion }

PROCEDURE MostrarFracciones (iNumer_1, iDenomin_1,                            iNumer_2, iDenomin_2 : Integer); BEGIN Writeln ; Writeln (iNumer_1:7,iNumer_2:10) ; Writeln ('-':7, ' =  ', '-') ; Writeln (iDenomin_1:7,iDenomin_2:10) END ; { MostrarFracciones }

FUNCTION fniCalcularMCD (iNum_1, iNum_2 : Integer) : Integer ; BEGIN WHILE iNum_1 <> iNum_2 DO       IF iNum_1 > iNum_2 THEN iNum_1 := iNum_1 - iNum_2 ELSE iNum_2 := iNum_2 - iNum_1 ;

fniCalcularMCD := iNum_1 END ; { fniCalcularMCD }

PROCEDURE CalcularFraccionIrreducible (   iNumer_1, iDenomin_1: Integer ;                                       VAR iNumer_2, iDenomin_2 : Integer) ; VAR iMcd : Integer ; BEGIN iMcd := fniCalcularMCD (iNumer_1, iDenomin_1) ;

iNumer_2  := iNumer_1   DIV iMcd ;

iDenomin_2 := iDenomin_1 DIV iMcd ; END ; {CalcularFraccionIrreducible }

{--- Variables del Programa Principal ---} VAR iNumer_1, iDenomin_1, iNumer_2, iDenomin_2: Integer ;

BEGIN {-- PROGRAMA PRINCIPAL ---}

LeerFraccion (iNumer_1, iDenomin_1) ;

IF (iNumer_1 <= 0) OR (iDenomin_1 <= 0) THEN BEGIN Writeln ; Writeln ('NUMERADOR y DENOMINADOR deben ser positivos') ; END ELSE BEGIN CalcularFraccionIrreducible(iNumer_1, iDenomin_1, iNumer_2, iDenomin_2); MostrarFracciones (iNumer_1, iDenomin_1, iNumer_2, iDenomin_2); END ; END. { Fin de SUBPR_8.PAS } code