Código [Seleccionar]
#include<stdio.h>
#include<math.h>
#define MD 99
#define MDU 9999 //MaximaDimensionUltra
int main(){
int i,j,c,e,Comb, op;
int P[MD],n,Factorizo;
//int MNR;//Maximo Numero de Raices
float DC[MD],DE[MD], temp;//Divisores Constante/Exponente
int NMDc,NMDe,NMComb;//Numero Maximo Divisores constante/exponente NumeroMaximoCombinaciones
double PR[MDU]; //Posibles Raices
printf("Dame el grado del polinomio\n");
scanf("%d",&n);
if(n<0){
printf("No es un polinomio");
}
if(n==0){
printf("No es un polinomio, es una constante");
}
if(n>0){
printf("\nDame el coeficiente de cada X\n");
printf("NOTA: X^0 es la constante\n\n");
for(i=0;i<n+1;i++){
printf("X^%d= ",i);
scanf("%d",&P[i]);
}
printf("\nPolinomio:\n");
for(i=0; i < n+1; i++){
printf("(%d)X^%d",P[i],i);
if(i != n) printf("+");
}
if(P[0]==0){
Factorizo=0;
for(i=0;i<Factorizo+1;i++){
if(P==0){
Factorizo=Factorizo+1;
}
}
printf("\n\nPero podemos factorizar %d X, por lo tanto ya sabemos que tiene %d raices igual a 0\n\n",Factorizo,Factorizo);
for(i=0;i<n+1;i++){
P[i]=P[i+Factorizo];
}
printf("\nNuevo Polinomio:\n");
for(i=0;i<n+1-Factorizo;i++){
printf("(%d)X^%d \n",P,i);
}
}
else{
Factorizo=0;
}
if(P[n]==0){
n=n-1;
for(i=n;i>n-1;i--){
if(P==0){
n=n-1;
}
}
printf("\n\nY tambien podemos eliminar algunas X\nNuevo Polinomio:\n");
for(i=0;i<n+1;i++){
printf(" %dX^%d\n",P,i);
}
}
printf("\nDivisores de constante\n");
c=0;
NMDc=0;
for(i=1;i<P[0]+1;i++){
if(P[0]%i==0){
DC[c]=i;
c++;
NMDc=NMDc+1;
}
}
printf("\nA %d lo dividen:\n",P[0]);
for(c=0;c<NMDc;c++){
printf("%.0f\n",DC[c]);
}
printf("\n\nDivisores de exponente\n");
e=0;
NMDe=0;
for(i=1;i<P[n]+1;i++){
if(P[n]%i==0){
DE[e]=i;
e++;
NMDe=NMDe+1;
}
}
printf("\nA %d lo dividen:\n",P[n]);
for(e=0;e<NMDe;e++){
printf("%.0f\n",DE[e]);
}
Comb=0;
NMComb=0;
for(i=0;i<NMDc;i++){
for(j=0;j<NMDe;j++){
PR[Comb] = DC[i] / DE[j];
Comb++;
NMComb = NMComb+1;
}
}
for (i=0; i<NMComb; i++)
{
op = 1;
for(j=0; j<NMComb; j++)
{
if(PR[j] < PR[i])
{
temp = PR[i];
PR[i] = PR[j];
PR[j] = temp;
}
if(PR[j] == PR[i] && i != j)
{
PR[j] = 999;
}
}
}
printf("\nPosibles Raices:\n");
for(i=0;i<NMComb;i++){
if(PR[i] != 999)
printf("%.4f\n",PR[i]);
}
}
return 0;
}
Ahi esta ya lo primero resuelto para calcular cuales son las raices que funcionan tienes que hacer dentro de un for que pruebe con los resultados sustituyendolos en x y efectuando las operaciones si el resultado de todo da 0 que imprima dicho valor y ya.