Tenho esse algoritmo acima para me retornar o número em forma de fração caso seu quociente não seja um número inteiro.
Gostaria de saber qual seria a lógica, para somar esse número em forma de fração, com outro fracionado ou não e o resultado continuar em forma de fração. Ou seja, 1/2 + 1 = 3/2.
Para que seja possível construir um algoritmo, antes de mais nada, é necessário saber como as coisas funcionam.
Portanto, dá uma olhada aqui
L
lvbarbosa
Nunca tinha parado pra pensar nesse problema, achei interessante o suficiente para tentar fazer algo aqui. Depois de dar uma revisada em frações, cheguei nisso aqui:
classMain{publicstaticvoidmain(String[]args){Fracaof1=newFracao(2,2);Fracaof2=newFracao(-2,4);System.out.println(f1.mais(f2).simplificada());}}classFracao{privatefinallongnumerador;privatefinallongdenominador;publicFracao(finallongnumerador,finallongdenominador){if(denominador==0l)thrownewIllegalArgumentException("Denominador não pode ser igual a zero.");this.numerador=numerador;this.denominador=denominador;}publicFracaomais(FracaooutraFracao){finallongnovoDenominador=lcm(denominador,outraFracao.denominador);finallongnovoNumerador=this.encontraNovoNumerador(novoDenominador)+outraFracao.encontraNovoNumerador(novoDenominador);returnnewFracao(novoNumerador,novoDenominador);}publicFracaosimplificada(){longgcd=gcd(numerador,denominador);returnnewFracao(numerador/gcd,denominador/gcd);}privatelongencontraNovoNumerador(longnovoDenominador){returnnovoDenominador/denominador*numerador;}privatestaticlonglcm(longa,longb){returna/gcd(a,b)*b;}privatestaticlonggcd(longa,longb){while(b!=0){longtemp=b;b=a%b;a=temp;}returna;}@OverridepublicStringtoString(){returnnumerador+"/"+denominador;}}