Turma, to com um problema aqui, estou tentando fazer uma calculadora de polinômios, e não to conseguindo fazer a divisão, alguém pode postar uma forma de se fazer, ou me ensinando como fazer?
Tem algum código já feito?
Opa,
Tente criar um algoritmo utilizando o método de Briot-Ruffini, infelizmente este método funciona somente apenas para Polinomios de qualquer grau divididos por polinômios de grau 1. Não irá resolver todos os seus problemas mas já lhe dará uma ideia de como fazer. Outros métodos interessantes são os métodos de Descartes e Chave ambos resolvem qualquer grau. O princípio destes dois últimos são os mesmos que vou lhe mostrar aqui com algumas modificações.
Inicialmente pegue o polinômio e binômio (divisor e dividendo) e armazene seus dados em uma struct algo assim:
typedef struct tgMetodoRuffini {
char dividendo[20]; //- Dividendo
char divisor[20]; //- Divisor
int16_t constDivisor; //- Termo constante do divisor
int16_t constDividendo; //- Termo constante do dividendo
int16_t coefDividendoAx; //- Coef. do dividendo (a)x + bx
int16_t coefDividendoBx; //- Coef. do dividendo ax + (b)x
} DivisaoRuffine;
Popule esta struct com os dados do seu polinômio e binômio, dê uma pesquisada na internet sobre o método Briot-Ruffine.
Então crie funções do tipo:
void MetodoRuffini(DivisaoRuffine *p) { ... }
void CarregaConstantes(DivisaoRuffine *p) { ... }
void CarregaCoeficientes(DivisaoRuffine *p) { ... }
void Calcula(DivisaoRuffine *p) { ... }
Não há à necessidade de utilizar retorno nestas funções pois você irá passar o endereço da struct para elas.
Esta será sua função principal que será chamada no main do seu programa
void MetodoRuffini(Polinomio *polinomios);
Esta ficará na sua função principal int main() ou void main()
Nela você irá chamar as outras 3 funções.
Com estas duas você carrega os dados na sua struct
void CarregaConstantes(DivisaoRuffine *p) { … }
void CarregaCoeficientes(DivisaoRuffine *p) { … }
Nesta você implementará o método de Briot-Ruffine
void Calcula(DivisaoRuffine *p);
Um detalhe muito importante nisso tudo é que, você vai precisar de manipular strings para trabalhar melhor com estes dados e fazer uma análise semântica dos mesmos, imagino que você já esteja fazendo isso.
A chamada da sua struct será algo assim:
DivisaoRuffine polinomios = { "x^2+4x+3", "x+1" };
//- Logo abaixo , dentro destas estará os outros métodos.
MetodoRuffini(&polinomios);
Qualquer dúvida posta ae