Programación General > ADA
Comparacion De Fracciones
s_burbuja:
Hola a todos!A ver...mi problema es que me han mandao una practica de ada y una de las partes es comparar 2 fracciones he indicar cual es la menor y cual es la mayor. El caso es que nosotros en el ejercio hemos definido el numerador y el denominador como nº enteros y claro no podemos hacer la division de ambas fracciones para averiguar cual es el resultado mayor porque nos puede devolver un real y nos da error.Queria preguntar de que forma se podria realizar ese apartado.Nosotros lo hemos intentado con if pero salen muchisimosssssss o lo hemos hecho mal que seria otra opcion.muchas gracias de antemano.
-SB-:
Hola!
Ayudaria mucho que pusieras tu codigo, de todas formas puedes hacer algo asi como:
--- Código: Text --- if float(n1/n2) < float(n3/n4) then -- n1/n2 es mas peke que la otra divisionelse -- pues lo contrarioend if;
Un saludito!
s_burbuja:
Muchas gracias SB, al final consegui hacerlo, no cai q podia asignar 2 vbles de tipo float independientes de las vbls integer :nosweat: Muchisimas gracias de todas formas.Es q a mi hasta q se me ocurren la ideas felices jeje :P .Bsots
:gracias:
Nagisa:
hi!! Aunque la solucion que te han dado funciona, yo creo que lo que se espera que hagas es reducir ambas fracciones a comun denominador y comparar los numeradores. Parece complicado, pero so observas un poco es mas sencillo de lo que parece, por que podrias reducirlo a un simple producto en cruz:
Comparamos a/b y c/d:
a/b == (a*d)/(b*d)
c/d == (b*c)/(b*d)
Y ahora solo comparariamos los numeradores: a*d con b*c
Como digo, lo otro tambien vale.
Nagisa:
De todos modos, ten cuidado por que la respuesta anterior es incorrecta (la mia no <_< ).
La comparacion deberias hacerla convirtiendo numerador y denominador a Float antes de dividir, no despues. Te dejo un pequeño programita para que veas la diferencia:
--- Código: Text --- with Ada.Text_IO, Ada.Float_Text_IO;use Ada.Text_IO, Ada.Float_Text_IO; procedure Prueba is a, b : Integer := 0;begin a := 5; b := 6; Put ( float(a / b) ); New_Line; Put ( float(a) / float(b) );end Prueba;
Eso te llevaria a hacer cuatro conversiones y dos divisiones entre Floats y luego una comparacion entre dos floats... Mientras que de mi forma solo haces dos multiplicaciones entre enteros y una comparacion entre enteros... :smartass:
Navegación
[#] Página Siguiente
Ir a la versión completa