Como faço para imprimir uma fração na tela, não em decimal, mas em a/b
Como faço para imprimir uma fração na tela, não em decimal, mas em a/b
Devo usar alguma biblioteca específica?
Devo usar alguma biblioteca específica?
Paulo Kutwak
Curtidas 0
Melhor post
Venancio Alves
27/07/2018
Olá Paulo Kutwak!
Poste o código de exemplo para entendermos a sua dúvida e ajudá-lo da melhor forma.
Poste o código de exemplo para entendermos a sua dúvida e ajudá-lo da melhor forma.
GOSTEI 1
Mais Respostas
Paulo Kutwak
27/07/2018
Ainda não fiz o código, mas posso explicar. Quero mostrar a saída do programa no formato racional, 5/3, 4/5 e não em formato 5.3, 4.2.
Por exemplo:
cout << a << "/" << b;
a vale 5 e b vale 3.
A saída que eu quero é 5/3.
Por exemplo, sabemos que 0.5 equivale a 1/2, quero que a saída seja 1/2 e não 0.5
Por exemplo:
cout << a << "/" << b;
a vale 5 e b vale 3.
A saída que eu quero é 5/3.
Por exemplo, sabemos que 0.5 equivale a 1/2, quero que a saída seja 1/2 e não 0.5
GOSTEI 0
Paulo Kutwak
27/07/2018
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
setlocale(LC_ALL, "Portuguese");
int a,b,c,d,i,e,f,g,h;
i = 0;
a = 0;
b = 0;
c = 0;
d = 0;
e = 0;
f = 0;
cout << "Entre com os valores da primeira fracao: ";
cin >> a;
cin >> b;
cout << "Entre com os valores da segunda fracao: ";
cin >> c;
cin >> d;
//e = ((a*d)+(b*c));
//e = a * d + b * c;
f = b * d;
cout << "A soma das fracoes é: " << e << "/" << f << "\\n";
//if (e % i == 0) || (f % i == 0) //dessa forma não pode, parenteses isolados.
if (e % i == 0 || f % i == 0)//correto
//if ((e % i == 0) || (f % i == 0))//correto
cout << "A simplificação nao é possivel\\n";
for (i=2;i<=10;i++)
{
if((e % i != 0) || (f % i != 0))
{
g = e / i;
h = f / i;
cout << "\\nO resultado da simplificação da fracao é:\\n " << g << "/" << h;
}
system("pause");
return 0;
}
}
Há um problema no qual eu não consigo resolver. O programa compila corretamente, mas sempre congela na execução.
Obrigado
#include <stdio.h>
using namespace std;
int main()
{
setlocale(LC_ALL, "Portuguese");
int a,b,c,d,i,e,f,g,h;
i = 0;
a = 0;
b = 0;
c = 0;
d = 0;
e = 0;
f = 0;
cout << "Entre com os valores da primeira fracao: ";
cin >> a;
cin >> b;
cout << "Entre com os valores da segunda fracao: ";
cin >> c;
cin >> d;
//e = ((a*d)+(b*c));
//e = a * d + b * c;
f = b * d;
cout << "A soma das fracoes é: " << e << "/" << f << "\\n";
//if (e % i == 0) || (f % i == 0) //dessa forma não pode, parenteses isolados.
if (e % i == 0 || f % i == 0)//correto
//if ((e % i == 0) || (f % i == 0))//correto
cout << "A simplificação nao é possivel\\n";
for (i=2;i<=10;i++)
{
if((e % i != 0) || (f % i != 0))
{
g = e / i;
h = f / i;
cout << "\\nO resultado da simplificação da fracao é:\\n " << g << "/" << h;
}
system("pause");
return 0;
}
}
Há um problema no qual eu não consigo resolver. O programa compila corretamente, mas sempre congela na execução.
Obrigado
GOSTEI 0
Felipe Morais
27/07/2018
Boa noite, Paulo.
Você precisa escrever a sua própria classe para calcular e exibir números fracionários ao invés de flutuantes. Tente isto:
Uso da classe:
Você precisa escrever a sua própria classe para calcular e exibir números fracionários ao invés de flutuantes. Tente isto:
class Rational { public: int numerator, denominator; Rational(int num, int den=1){ numerator = num; denominator=den; } Rational(Rational other){ numerator = other.numerator; denominator = other.denominator; } double operator / (int divisor){ denominator *= divisor; simplificate(); return getrealformat(); } Rational& operator / (int divisor){ denominator *= divisor; simplificate(); return this; } Rational& operator / (Rational &divisor){ numerator *= divisor.numerator; denominator *= divisor.denominator; simplificate(); return this; } double operator / (int divisor){ denominator *= divisor; simplificate(); return getrealformat(); } double getrealformat(){ return numerator/denominator; } simplificate(){ int commondivisor = 1; for(int i=2;i<=min(abs(numerator), abs(denominator));i++) if( numerator%i == 0 && denominator%i == 0 ) commondivisor = i; numerator /= commondivisor; denominator /= commondivisor; } };
Uso da classe:
Rational r1(45), r2(90), r3=r1/r2; cout<<r3.numerator<<'/'<<r3.denominator; cout<<r3.getrealformat();
GOSTEI 0