Ola novamente, agora um nooovo probleminha
a prof quer que faca um prog que pege o numerador , denominador e faca as continhas normais.
soma multiplica subtrai.. essas coisinhas
ate ai blz
so que ela quer que imprima o resultado com o /
falta fazer o toString.. que nao sei como vou fazer
e mostrar na tela o doable como se fosse um int em cima do outro
:roll:
que foi justamente onde travei..
o prog vai ser rodado em outra classe...
que ainda nao terminei..
mas essa dai eh que eh a que travei =(
Olá zeed, o dela está correto também, só dei algumas idéias… mas o exemplo do raciocínio que vc deu creio que esteja errado, os numeradores são os números de cima (1 e 3)
Zeed01
Boa noite colegas !
kairy:
Não entendi o que você quis dizer…
Veja bem o metodo que ela postou é:
ou seja, entram 4 números e faz-se algumas operações com estes números…
se entrando 1,2,3,2 nessa sequencia a intenção era somar as frações 1/2 e 3/2
a fórmula teria que ser:
O que você quis dizer com “os numeradores seriam os numeros de cima (1 e 3)”.
De qualquer forma entendo que na fórmuma esta faltando parenteses para que faça primeiro a soma das multiplicações…
Por favor não interprete mal… só não entendi.
[]s
T
thingol
Não é pra usar double no seu programa. Estude o programa abaixo e o complete.
Ola novamente, agora um nooovo probleminha
a prof quer que faca um prog que pege o numerador , denominador e faca as continhas normais.
soma multiplica subtrai… essas coisinhas
ate ai blz
so que ela quer que imprima o resultado com o /
O problema é que vc não entendeu o conceito de numero racional.
Um numero racional é um numero na forma n/d em que a divisão NUNCA é efetuada.
O seu codigo faz a dividisão por isso vc nunca conseguirá um toString na forma n/d.
Crie uma classe racional com as operações entre racionais e não entre numeros sem significado.
utilize as regras de multiplicação, divisão e soma que aprendeu na escola para conseguir obter um nuemro na forma n/d exemplo
Seu professor não vai aceitar isto, mas é interessante - isto implementa um algoritmo que converte um double em um número racional aproximado.
importjava.math.*;importjava.util.*;classRational{privateBigIntegernumerator;privateBigIntegerdenominator;publicRational(longn){numerator=newBigInteger(Long.toString(n));denominator=BigInteger.ONE;}publicRational(BigIntegern,BigIntegerd){numerator=n;denominator=d;simplify();}publicRational(Rationalr){numerator=r.numerator;denominator=r.denominator;}publicRational(){numerator=BigInteger.ZERO;denominator=BigInteger.ONE;}publicStringtoString(){returnnumerator+"/"+denominator;}publicstaticRationaladd(Rationalx,Rationaly){returnnewRational(x.numerator.multiply(y.denominator).add(y.numerator.multiply(x.denominator)),x.denominator.multiply(y.denominator));}publicstaticRationalsub(Rationalx,Rationaly){returnnewRational(x.numerator.multiply(y.denominator).subtract(y.numerator.multiply(x.denominator)),x.denominator.multiply(y.denominator));}publicstaticRationalmul(Rationalx,Rationaly){returnnewRational(x.numerator.multiply(y.numerator),x.denominator.multiply(y.denominator));}publicstaticRationaldiv(Rationalx,Rationaly){returnnewRational(x.numerator.multiply(y.denominator),x.denominator.multiply(y.numerator));}publicstaticRationalinv(Rationalx){returnnewRational(x.denominator,x.numerator);}privatevoidsimplify(){if(!numerator.equals(BigInteger.ZERO)){BigIntegergcd=numerator.gcd(denominator);numerator=numerator.divide(gcd);denominator=denominator.divide(gcd);}else{denominator=BigInteger.ONE;}}publicdoubledoubleValue(){returnnumerator.doubleValue()/denominator.doubleValue();}}classRat{publicRationalrat(doublex,doubletolerance){long[]d=newlong[21];intk=d.length-1;for(inti=0;i<d.length;++i){d[i]=(long)x;// picking off the integer partif(x-d[i]<tolerance){k=i;break;}x=1/(x-d[i]);}//-- Uma vez que temos os termos, devemos achar o valor correto // Calculando 1/dk, somando com d[k-1], invertendo e assim por diante.Rationalq=newRational(d[k]);for(inti=k;i>=1;--i){q=Rational.inv(q);q=Rational.add(q,newRational(d[i-1]));}returnq;}publicstaticvoidmain(String[]args){doubletolerance=1E-10;Ratr=newRat();Rationalf;f=r.rat(4.0/3.0,tolerance);// 4/3System.out.println(f);f=r.rat(11.0/7.0,tolerance);// 11/7System.out.println(f);f=r.rat(7.0/1999.0,tolerance);// 7/1999System.out.println(f);f=r.rat(0.75,tolerance);// 3/4System.out.println(f);f=r.rat(18.69,tolerance);// 1869/100System.out.println(f);f=r.rat(18.691,tolerance);// 4030356987616734543/215630891210568443System.out.println(f);//-- Note que o algoritmo pode desembestar:f=r.rat(2005.0/2006.0,tolerance);// 14374494523137244723793128/14381663847088933356788119System.out.println(f);//-- Para valores famosos...f=r.rat(Math.sqrt(2.0),tolerance);// 54608393/38613965System.out.println(f);f=r.rat(Math.PI,tolerance);// 42581509225984/13554115355257System.out.println(f);f=r.rat(Math.E,tolerance);// 325368125/119696244System.out.println(f);f=r.rat(Math.log(10),tolerance);// [telefone removido]/[telefone removido]System.out.println(f);f=r.rat((Math.sqrt(5.0)+1.0)/2.0,tolerance);// 17711/10946System.out.println(f);}}