Um racional é qualquer número da forma
, sendo
inteiro e
inteiro não nulo. É conveniente representar um racional por um registro:
struct racional{
int p, q;
};
Vamos convencionar que o campo
de todo racional é estritamente positivo e que o máximo divisor comum dos campos
e
é 1 . Escreva
uma função neg que receba um racional
e devolva o racional -x;
struct racional{
int p, q;
};
uma função neg que receba um racional
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
e
. A função neg deve receber um racional
e devolver o racional
.
Passo 2
Para negar um racional
, basta trocar o sinal do numerador:
.
Como mantemos e
, as convenções continuam válidas.
Como mantemos
Passo 3
Implementamos a função C criando um novo registro, atribuindo ao campo p o valor
e copiando o campo q de
, e retornamos esse registro.
Resposta
struct racional neg(struct racional x) {
struct racional r;
r.p = -x.p;
r.q = x.q;
return r;
}
struct racional r;
r.p = -x.p;
r.q = x.q;
return r;
}