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.
Este producto ya no está disponible
Disponible el:
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.
Destinatario :
* Campos requeridos
o Cancelar
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.
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.
Publicidad.
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 ; ).
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
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.
Publicidad.
Descarga Aqui Totalmente Gratis
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.
Una chica!
Genial! una mujer programadora.
Excelente
Gran post
No se requiere registro
2 Pregunta(s) respondidas
Si luego de leer nuestro articulo aun tiene dudas, puede hacer su pregunta utilizando el siguiente formulario.
Si el enlace de descarga redirige a otro producto que no es el descrito en el artículo o está roto, reportarlo usando nuestro