Polinômios esparsos em c
Manipulação de Polinômios Esparsos
Entrega: 25 de abril
Dúvidas sobre este EP devem ser enviadas para o Fórum de Discussão de MAC0122
Polinômios esparsos podem ser representados eficientemente por meio de listas encadeadas. Neste exercício-programa você escreverá uma biblioteca que usa listas encadeadas para implementar o tipo abstrato de dados "polinômio". A interface da sua biblioteca deve ser o arquivo polinomio.h, cujo conteúdo é o seguinte: typedef struct termo *Polinomio; Polinomio cria_monomio(double coef, int exp); Polinomio soma(Polinomio p, Polinomio q); Polinomio subtrai(Polinomio p, Polinomio q); Polinomio multiplica(Polinomio p, Polinomio q); Polinomio deriva(Polinomio p); double calcula(Polinomio p, double x); void imprime(Polinomio p, FILE *arq); void libera(Polinomio p);
Note que o arquivo polinomio.h especifica o que se pode fazer com um Polinomio (isto é, as operações sobre polinômios), mas não informa como um Polinomio é implementado. O tipo Polinomio é definido como um apontador para uma estrutura cuja definição não é parte da interface da biblioteca. (A definição da estrutura termo não aparece no arquivo polinomio.h.) Isso faz com que o tipo Polinomio seja abstrato. Note, ainda, que esse tipo também é de primeira classe, pois podemos ter múltiplos polinômios e podemos armazenar esses polinômios em variáveis do tipo Polinomio.
Abaixo descrevemos o que deve fazer cada uma das funções da biblioteca: * Polinomio cria_monomio(double coef, int exp);
Cria um novo monômio (um polinômio com um só termo) cujo coeficiente é coef e cujo expoente é exp e devolve o monômio criado. Caso o parâmetro coef seja igual a zero, esta