estou com problema em ajudar um amigo meu no seguinte exercício: "Escreva um programa que faça contas com números racionais não negativos (frações). O programa deve suportar as quatro operações básicas +, -, *, / e o resultado de qualquer operação deve ser uma fração simplificada (isso consegue-se dividindo o numerador e o denominador do resultado pelo MDC entre os dois)."
O que ele já fez foi:
typedef struct {
int num, den;
} Rational;
void write_rational(Rational rational)
{
printf("%d/%d", rational.num, rational.den);
}
Rational sum(Rational a, Rational b)
{
Rational sum;
((sum.num = (a.num * b.den) + (b.num * a.den)) && (sum.den = a.den * b.den));
}
Rational subtract(Rational a, Rational b)
{
Rational sub;
((sub.num = (a.num * b.den) - (b.num * a.den)) && (sub.den = a.den * b.den));
}
Rational multiply(Rational a, Rational b)
{
Rational mult;
((mult.num = (a.num * b.num)) && (mult.den = (a.den * b.den)));
}
Rational divide(Rational a, Rational b)
{
Rational div;
((div.num = (a.num * b.den)) && (div.den = (a.den * b.num)));
}
int main(void)
{
char operation;
Rational r, s;
printf("Introduza expressao: ");
scanf("%d/%d %c %d/%d", &r.num, &r.den, &operation, &s.num, &s.den);
if (operation == '+')
write_rational(sum(r, s));
else if (operation == '-')
write_rational(subtract(r, s));
else if (operation == '*')
write_rational(multiply(r, s));
else
write_rational(divide(r, s));
return 0;
}
Como não nunca tinha me deparado com um problema com números racionais eu não estou conseguindo saber o que esta errado, sera que alguém pode me ajudar?
Abs.