• Lunes 23 de Diciembre de 2024, 14:31

Autor Tema:  Modulo Fracciones  (Leído 2234 veces)

dantrax

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Modulo Fracciones
« en: Martes 4 de Mayo de 2004, 04:44 »
0
Necesito realizar un modulo capaz de mostrar en pantalla los numeros en forma fraccionaria.
necesito esto para poder trabajar con matrices, ya que si trabajo con decimales, la respuesta que ando buscando se degenera.
por ejemplo: tengo un sistema de ecuaciones de 3x3
.5x+.25y+4z = 4
5x + 6y -6z = 0.3333
.4x -.75y + 8z = 7

quiero que me muestre:
1/2x+1/4y+4z =4
5x + 6y -6z = 1/3
2/5x -3/4y + 8z = 7


les agradeceria bastante si me ayudaran acerca de este modulo

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Modulo Fracciones
« Respuesta #1 en: Lunes 10 de Mayo de 2004, 18:14 »
0
Hola dantrax.

Podrías crear una estructura de datos para esas fracciones, de forma que almacenes por un lado el numerador y por otro el denominador. Crea una cuantas funciones para realizar las operaciones básicas con este tipo de datos y otra más para simplificar. El único problema lo encontrarás probablemente si intentas usar como un parámetro una variable de este tipo, pero eso lo puedes solucionar creando un componente o usando un par de variables públicas a nivel de módulo.

Suerte.

dantrax

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: Modulo Fracciones
« Respuesta #2 en: Viernes 14 de Mayo de 2004, 21:25 »
0
Gracias Brroz
He realizado una funcion que me devuelve el numerador y el denominador.
Pero tengo un pequeño problema. como hago para trabajar con ese resultado.
por ejemplo. Meto a la funcion el valor de 10/25, la funcion me devuelve 2 y 5
si yo quiero utilizar este resultado, ¿como lo haria porque si pongo 2/5, la maquina lo tomaria como 0.40?

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Modulo Fracciones
« Respuesta #3 en: Sábado 15 de Mayo de 2004, 09:07 »
0
Hola dantrax.

Me refiero a que utilices una estrutura de datos y funciones para realizar operaciones con esas estructuras. Fíjate en el código:
Código: Text
  1.  
  2. Option Explicit
  3.  
  4. Public operando1 As Fraccion
  5. Public operando2 As Fraccion
  6. Public resultado As Fraccion
  7.  
  8. Public Type Fraccion
  9.     Numerador As Double
  10.     Denominador As Double
  11. End Type
  12.  
  13. Public Sub Simplificar()
  14.    
  15.     Dim intPrimos(5) As Integer, int1 As Integer
  16.     Dim ind1 As Boolean
  17.    
  18.     intPrimos(0) = 2
  19.     intPrimos(1) = 3
  20.     intPrimos(2) = 5
  21.     intPrimos(3) = 7
  22.     intPrimos(4) = 11
  23.    
  24.     'Se recibe la entrada sin simplificar de operando1
  25.     'y se devuelve simplificada en resultado.
  26.     resultado = operando1
  27.    
  28.     ind1 = True
  29.    
  30.     Do While ind1
  31.        
  32.         ind1 = False
  33.                
  34.         For int1 = 0 To 4
  35.             If resultado.Numerador Mod intPrimos(int1) = 0 _
  36.             And resultado.Denominador Mod intPrimos(int1) = 0 Then
  37.                 resultado.Numerador = resultado.Numerador / intPrimos(int1)
  38.                 resultado.Denominador = resultado.Denominador / intPrimos(int1)
  39.                 ind1 = True
  40.             End If
  41.         Next int1
  42.        
  43.     Loop
  44.    
  45. End Sub
  46.  
  47. Public Sub Sumar(Optional ByVal Simp As Boolean)
  48.  
  49.     Dim den As Double
  50.     den = operando1.Denominador * operando2.Denominador
  51.     operando1.Numerador = operando1.Numerador * operando2.Denominador
  52.     operando2.Numerador = operando2.Numerador * operando1.Denominador
  53.     operando1.Denominador = den
  54.     operando2.Denominador = den
  55.        
  56.     If Not Simp Then
  57.         resultado.Numerador = operando1.Numerador + operando2.Numerador
  58.         resultado.Denominador = den
  59.     Else
  60.         operando1.Numerador = operando1.Numerador + operando2.Numerador
  61.         Simplificar
  62.     End If
  63.    
  64. End Sub
  65.  
  66. Public Sub Restar(Optional ByVal Simp As Boolean)
  67.  
  68.     Dim den As Double
  69.     den = operando1.Denominador * operando2.Denominador
  70.     operando1.Numerador = operando1.Numerador * operando2.Denominador
  71.     operando2.Numerador = operando2.Numerador * operando1.Denominador
  72.     operando1.Denominador = den
  73.     operando2.Denominador = den
  74.        
  75.     If Not Simp Then
  76.         resultado.Numerador = operando1.Numerador - operando2.Numerador
  77.         resultado.Denominador = den
  78.     Else
  79.         operando1.Numerador = operando1.Numerador - operando2.Numerador
  80.         Simplificar
  81.     End If
  82.    
  83. End Sub
  84.  
  85. Public Sub Multiplicar(Optional ByVal Simp As Boolean)
  86.  
  87.     If Not Simp Then
  88.         resultado.Numerador = operando1.Numerador * operando2.Numerador
  89.         resultado.Denominador = operando1.Denominador * operando2.Denominador
  90.     Else
  91.         operando1.Numerador = operando1.Numerador * operando2.Numerador
  92.         operando1.Denominador = operando1.Denominador * operando2.Denominador
  93.         Simplificar
  94.     End If
  95.    
  96. End Sub
  97.  
  98. Public Sub Dividir(Optional ByVal Simp As Boolean)
  99.  
  100.     If Not Simp Then
  101.         resultado.Numerador = operando1.Numerador * operando2.Denominador
  102.         resultado.Denominador = operando1.Denominador * operando2.Numerador
  103.     Else
  104.         operando1.Numerador = operando1.Numerador * operando2.Denominador
  105.         operando1.Denominador = operando1.Denominador * operando2.Numerador
  106.         Simplificar
  107.     End If
  108.    
  109. End Sub
  110.  
  111.  

Suerte.