Página 1 de 1

Como hacer para que devulva una fgracción!

Publicado: 27 Mar 2010, 00:18
por Charlie19
Hola,
Ahora hago un tema paralelo al del orden ( que de momento no tiene mucha contestación.)
Bueno este lo abro para haber si alguien me indica un comando para que me devulva una variable en forma de fracción, vamos que al poner:

Código: Seleccionar todo

$n1 = 1/16
...
$n1 = $n1 + 1/16
...
Bueno que quando ponga un MsgBox para el resultado en esta me salgo ( en este ejemplo) 2/16! y no 0,125 ¬¬'
Xd garcias

Re: Como hacer para que devulva una fgracción!

Publicado: 28 Mar 2010, 23:02
por Chefito
Que yo sepa no hay nada parecido a lo que tú quieres. Te va a tocar hacer una función para que te devuelva eso. Tendrás que aplicar las propiedades de suma de las fracciones. No es muy dificil de hacer.
Recuerda, tendrás que buscar el el m.c.m de los denominadores, y luego multiplicar los numeradores por el resultado de la división del m.c.m. entre su denominador. Así tendrías ya los numeradores, los cuales finalmente podrás sumar, y los denominadores en común.
No es muy dificil. Intenta algo. Te recomiendo que hagas a parte la función para hallar el m.c.m.

Saludos.

Re: Como hacer para que devulva una fgracción!

Publicado: 29 Mar 2010, 10:45
por Ximorro
Para eso te va a tocar trabajar con las fracciones en formato texto, y analizarlas y hacer las operaciones "a mano". Es lo que se llama cálculo simbólico.
Mira te hago un minicódigo para sumar dos fracciones de esta manera, así a lo rápido, la fracción no está simplificada (ya calcularás tú el m.c.m. ;-) )
Ahí puedes ver por ejemplo cómo empezar a analizar las fracciones para sacar numerador y denominador, además habría que mirar el signo... esto es sólo para abrir boca...

Código: Seleccionar todo

Global $a, $b
$a = "1/2"
$b = "1/5"
MsgBox(0, "Suma fracciones", StringFormat("%s + %s = %s", $a, $b, _SumaFrac($a, $b)))

Func _SumaFrac($n1, $n2)
	Local $m1, $m2, $nume1, $deno1, $nume2, $deno2
	$m1 = StringSplit($n1, "/")
	$nume1 = $m1[1]
	$deno1 = $m1[2]
	$m2 = StringSplit($n2, "/")
	$nume2 = $m2[1]
	$deno2 = $m2[2]
	Return ($nume1*$deno2+$nume2*$deno1) & "/" & ($deno1*$deno2)
EndFunc
Otra cosa más complicada es analizar expresiones, tipo "1/2 + 2/3" en el que hay que sacar operadores y números. Un analizador complejo de expresiones puede ser un arte...

Ah, y otra es tener un número decimal tipo 1.23423423 y ver qué fracción representa. Si sólo quieres pasar resultados a fracción quizás se pueda atacar la cosa por ahí, aunque está claro que no todos los números reales se pueden representar por fraciones... por ejemplo 4 * ATan(1) ;-)