Algoritmo para simplificar fracciones en VB.NET y C#

Algoritmo para simplificar fracciones

En este artículo te muestro el algoritmo de como realizar la reducción o simplificación de fracciones de forma rápida en NET Framework.

Algoritmo para simplificar fracciones

Hola que tal, hoy les traigo otra función obligada de realizar para los novatos en la programación, la cual es la Simplificación de Fracciones. La estructura esta desarrollada en VB.NET con framework 4.5.

Es muchísimo más simple que mi anterior solución de números complejos, pero se comporta casi de la misma forma; es decir, le agregué:

-> Constructores normales y de cadena de caracteres.

-> Conversión ToString() personalizada.

-> Sobrecarga de operadores de forma de que nuestros números racionales sean manejados directamente en la línea de código.

Cálculo rápido del MCD

Adicionalmente a sumar,restar, multiplicar, dividir y presentar las fracciones, agregue el famoso algoritmo de Euclides para su simplificación, pero en su versión de reducción por restos, el cual muestro a continuación:

Public Shared Function mcdFast(eN As Integer, eD As Integer) As Integer
Dim
DD, DS, R As Integer

'Buscamos cual es mayor divisor, para asignarlo
'a nuestra comprobacion de restos
DD = If(eN > eD, eN, eD)
DS =
If(eN <= eD, eN, eD)

R = DD
Mod DS 'Primer tanteo
While R > 0
'Dividimos e intercambiamos
'con el resto generado y volvemos a comprobar
DD = DS : DS = R
R = DD
Mod DS
End While
Return
DS
End Function

El algoritmo de Euclides simplificado anterior reza en lenguaje moderno algo como esto:

Para calcular el máximo común divisor entre dos números enteros positivos a y b dividimos el más grande, digamos a, entre el más pequeño, digamos b. Esta división nos proporcionará un cociente, “c1”, y un resto, “r1”.

Si “r1” = 0, entonces el mcd(entre a y b) = b. Si no es cero dividimos el divisor, “c1”, entre el resto, “r1”, obteniendo otro cociente, “c2”, y otro resto, “r2”. Si “r2” = 0, entonces mcd(entre a yb) = “r2”. Si no es cero volvemos a dividir divisor entre resto. Y así sucesivamente (tenemos el bucle de iteración).

No use recursividad, porque realmente no me gusta mucho debido a que el proceso de depurar es un VERDADERO DOLOR DE CABEZA. Pero también incluí la función recursiva que está bastante generalizada por internet.

Es la siguiente:

    Public Shared Function mcd(eN As Integer, eD As Integer) As Integer
If
eN Mod eD = 0 Then
Return
eD
Else
Return
mcd(eD, eN Mod eD)
End If
End Function

Para el ojo inexperto, de inmediato asumirá que la función inicial es más lenta que la recursiva, ya que tiene más código, pero no es así. Como pueden ver, la que implemente sin recursividad le coloque el nombre de mcdFast, y es que de hecho es casi el 50% más rápida que la original recursiva. Asi que no siempre la recursión es la mejor opción ; ).

Utilización de la estructura NumeroRacional

Crear un numero racional en línea de código se define como:

Creamos dos fracciones 1/2 y 1/3:

        Dim NR1 = New NumeroRacional(1, 2)
Dim NR2 = New NumeroRacional("1/3")

Como se ve anteriormente el constructor puede construir el numero racional con parámetros independientes o en presentación de cadena de caracteres. Algo importante que agregar es que siempre al final de la construcción se reduce la fracción.

Una vez creados nuestros números racionales podemos simplemente sumarlos de la siguiente forma:

        Dim Resultado As NumeroRacional

Resultado = NR1 + NR2

Podemos entonces sacarlo por pantalla de consola:

Console.WriteLine("Resultado {0}", Resultado)

Veremos en pantalla de consola lo siguiente:

Resultado 5/6

Abajo les dejo el enlace de descarga del programa estructura NumeroRacional.

Aquí el video de la explicación

Escrito por:

Elimar D.

10/04/2018

Zona de descarga:


Totalmente libre de virus y software malicioso, así que no esperes más en descargartelo ahora.

No olvides darnos una opinion acerca del programa, para mejorar el contenido.

Siguenos en nuestras redes Sociales


 NOTA: No olvides seguirnos en nuestras redes sociales de facebook y twitter para que formes parte de nuestra comunidad y recibas la notificacion cada vez que publiquemos algo nuevo, asi no te perderas de nada.

Grado 
10/05/2018

Una chica!

Genial! una mujer programadora.

Grado 
10/04/2018

Excelente

Gran post

Escribe tu comentario

Escribe tu opinión

Algoritmo para simplificar fracciones

Algoritmo para simplificar fracciones

En este artículo te muestro el algoritmo de como realizar la reducción o simplificación de fracciones de forma rápida en NET Framework.

Haz una pregunta

No se requiere registro

1 Pregunta(s) respondidas

Si luego de leer nuestro articulo aun tiene dudas, puede hacer su pregunta utilizando el siguiente formulario.

(Opcional)
*(Requerido para ser notificado cuando la respuesta este disponible)
  • Preguntada por: Gilberto Mendoza
    el 24/06/2018
    Puedes subir un ejemplo en visual basic, pero no en console.... quisiera saber un ejemplo. Soy nuevo en programacion. gracias Respuesta:
    Claro, esta semana lo hago Gilberto y lo subo.

Si el enlace de descarga redirige a otro producto que no es el descrito en el artículo o está roto, reportarlo usando nuestro

 FORMULARIO DE REPORTE

MásArtículos