Um racional é qualquer número da forma p / q, sendo p inteiro e q inteiro não nulo. É conveniente representar um racional por um registro:
struct racional{
    int p, q;
};
Vamos convencionar que o campo q de todo racional é estritamente positivo e que o máximo divisor comum dos campos p e q é 1 . Escreva
uma função neg que receba um racional x e devolva o racional -x;

Passo 1

O enunciado define um tipo de dado para números racionais usando a struct
struct racional{
    int p, q;
};
com as convenções de que q>0 e gcd(p,q)=1. A função neg deve receber um racional x e devolver o racional -x.

Passo 2

Para negar um racional x = p/q, basta trocar o sinal do numerador:
-x = -p/q.
Como mantemos q>0 e gcd(-p,q)=gcd(p,q)=1, as convenções continuam válidas.

Passo 3

Implementamos a função C criando um novo registro, atribuindo ao campo p o valor -xp e copiando o campo q de x, e retornamos esse registro.

Resposta

struct racional neg(struct racional x) {
struct racional r;
r.p = -x.p;
r.q = x.q;
return r;
}

Exercícios relacionados