Suma+de+fracciones

=__**Suma de dos fracciones**__=

Leer dos fracciones y calcular su suma (su fracción irreducible equivalente).

code format="pascal" PROGRAM SumarFracciones ;

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

PROCEDURE MostrarFraccion ( iNumerador, iDenominador : Integer) ; BEGIN WriteLn (' Numerador: ', iNumerador) ; WriteLn ('Denominador: ', iDenominador) ; END ;

{ Calcular el Maximo Común Divisor de dos numeros } 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 ;

{ Calcular el Mínimo Común Múltiplo de dos numeros } FUNCTION fniCalcularMCM (iNum_1, iNum_2 : Integer) : Integer ; BEGIN fniCalcularMCM := (iNum_1 * iNum_2) DIV fniCalcularMCD (iNum_1, iNum_2) ; END ;

PROCEDURE ObtenerFraccionIrreducible (VAR iNumer, iDenomin : Integer) ; VAR iMcd : Integer ; BEGIN iMcd := fniCalcularMCD (Abs (iNumer), Abs (iDenomin)) ;

iNumer  := iNumer   DIV iMCD ; iDenomin := iDenomin DIV iMCD ; END ;

PROCEDURE Sumar (    iNumer_1, iDenom_1, iNumer_2, iDenom_2 : Integer ;                 VAR  iNumer_S, iDenom_S : Integer) ; VAR iMCM : Integer ; BEGIN iMCM := fniCalcularMCM (Abs (iDenom_1), Abs (iDenom_2)) ;

iNumer_1 := iNumer_1 * (iMCM DIV iDenom_1) ; iNumer_2 := iNumer_2 * (iMCM DIV iDenom_2) ;

iNumer_S := iNumer_1 + iNumer_2 ; iDenom_S := iMCM ;

ObtenerFraccionIrreducible (iNumer_S, iDenom_S) ; END ;

VAR  {- Variables del programa principal ---} iNumer_1, iDenom_1, iNumer_2, iDenom_2, iNumer_S, iDenom_S : Integer ;

BEGIN { Programa principal --} Writeln ('Escribe la primera fraccion (numeros enteros):') ; LeerFraccion (iNumer_1, iDenom_1) ;

Writeln ('Escribe la segunda fraccion (numeros enteros):') ; LeerFraccion (iNumer_2, iDenom_2) ;

Sumar (iNumer_1, iDenom_1, iNumer_2, iDenom_2, iNumer_S, iDenom_S) ;

Writeln ; Writeln ('La suma vale: ') ; MostrarFraccion (iNumer_S, iDenom_S) ;

Writeln ; Readln ; END. code