Ir ao conteúdo

Posts recomendados

Postado

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.

 

  • Obrigado 1
Postado

Faltou retornar os valores calculados dentro das funções usando return , e não sei por que está realizando operação && entre os valores calculados.

  • Curtir 2

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!