Programación General > Visual Basic para principiantes

 Un método que simplifique la fracción a su mínima expresión

(1/1)

jessica camacho:
hola a todos ..!
Para encontrar un metodo de simplificar ya sea:

(6 / 8)  ambos dividiendo entre 2 para poder simplificar a una minima expresion
calculos
(6 / 2) = 3
(8 / 2) = 4

dando resultado como 3/4

Como seria el codigo en visual basic

arielb:
Hola, bienvenida al foro.
Lamentablemente no podemos ayudarte. La forma en que preguntas no es para este foro y ni en muchos otros foros.
Si durante tú programación te encuentras con un problema, lo colocas acá y de seguro alguién te dará el apoyo.
Te recomiendo que utilices google, de seguro te saldrán mucho ejemplos.

Saludos,

Nebire:

--- Cita de: jessica camacho en Lunes 21 de Mayo de 2012, 04:25 ---hola a todos ..!
Para encontrar un metodo de simplificar ya sea:

(6 / 8)  ambos dividiendo entre 2 para poder simplificar a una minima expresion
calculos
(6 / 2) = 3
(8 / 2) = 4

dando resultado como 3/4

Como seria el codigo en visual basic

--- Fin de la cita ---

Aunque no te hayas expresado muy correctamente, yo te he entendido...
Lo que pides, es lo que se conoce como hallar el 'Máximo común divisor', que te enseñaron seguramente de niño, y que por lo visto has olvidado...

Yo te muestro un método 'lento de cálculo', pero rápido de programar, puede ser optimizado de varias maneras, la 1ª mirando si el bucle debe ser creciente o decreciente y la más óptima es usando una tabla de primos (para recorrer sólo esos valores, no el resto).
El código es susceptible de ser optimizado. Una vez comprendas lo que hace, puedes modificar el cómo lo hace... eso ya queda a tu esfuerzo....

Al final del bucle se obtiene el MCD que devuelve la función y las fracciones reducidas que se devuelven por referencia a través de los parámetros.

Para ejecutar el proyecto, añade al formulario 1 botón 1 dos controles de texto, luego copia el código (está comentado) y pégalo en la ventana de código:


--- Código: Visual Basic ---Private Sub Command1_Click()    Dim d As Long, n As Long, m As Long    Dim v() As String        v = Split(Text1.Text, "/")    d = Val(v(0)) 'Val(Right$(Text1.Text, 1))    n = Val(v(1)) 'val(Left$(Text1.Text, 1))        m = MCD(d, n)    Text2.Text = "MCD= " & CStr(m) & "; Reducción de la fracción: " & CStr(d) & "/" & CStr(n)End Sub  ' Den= Denominador' Num= Numerador' Halla el máximo común divisor de los valores fraccionarios dados...Public Function MCD(ByRef Den As Long, ByRef Num As Long) As Long    Dim v As Long   ' contendrá temporalmente el valor MCD calculado    Dim Ix As Long  ' índice usado en el bucle.    Dim max As Long ' valor máximo que debe cabría esperar que fuera divisor, así 'a lo bruto'.            ' Comprobamos que es menor si el denominador o el numerador.    '  para luego hallar su mitad, que entregamos en max    '   como max es un long, el valor devuelto es entero.    ' El objetivo de esto (max) es conocer el mayor valor tras el cual    '   es imposible que haya otro que divida a dichos números.    '   Si el valor es 20, es absurdo usar un número mayor de 20    '     pero incluso basta con la mitad (ya que el primo menor es 2).    If Den < Num Then        max = (Den \ 2) + 1    Else        max = (Num \ 2) + 1    End If                v = 1    For Ix = max To 2 Step -1       ' este  bucle recorre los números.        Do                          ' este bucle permite recoger cuantas veces esté un número...            If Den Mod Ix <> 0 Then Exit Do   ' si no es múltiplo, no lo divide            If Num Mod Ix <> 0 Then Exit Do   ' si es múltiplo del den, pero no del num, no vale.            v = v * Ix              ' calculando sobre la marcha el MCD...            Den = Den \ Ix          ' lo dividimos            Num = Num \ Ix          ' lo dividimos        Loop    Next        MCD = vEnd Function 

Navegación

[0] Índice de Mensajes

Ir a la versión completa