Programa Que Suma Dos Polinomios De Cualquier Grado En C
Enviado por danychad • 18 de Febrero de 2014 • 409 Palabras (2 Páginas) • 448 Visitas
#include<stdio.h>
#include<stdlib.h>
// Definición de un nuevo tipo de dato: polinom
typedef struct{
int grado;
int *coef;
}polinom;
// Función de lectura de polinomios
polinom LeePolinom(){
polinom pol;
int i = 0;
pol.grado=0;
pol.coef=NULL;
printf("Indica el grado del polinomio: ");
scanf("%d",&pol.grado);
/* Asignación de memoria para el vector de coeficientes, según
el grado del polinomio */
pol.coef = (int *)malloc((pol.grado + 1) * sizeof(int));
if(pol.coef != NULL){
//Lectura de coeficientes, de mayor a menor grado
for(i=pol.grado; i>=0;i--){
printf("Dame el valor del coeficiente %d: ",i);
scanf("%d",&pol.coef[i]);
}
}
return pol;
}
// Función que suma A y B
polinom SumaPolinom(polinom polA, polinom polB){
int gradoMAX, polMAX;
int i=0;
polinom polRes = {0,NULL};
/* Condición que indica el grado que tendrá polRes */
if(polA.grado>=polB.grado){
gradoMAX = polA.grado;
polMAX = 1;
}
else{
gradoMAX = polB.grado;
polMAX = 2;
}
polRes.grado = gradoMAX;
//Asignación de memoria para polRes
polRes.coef=(int *)malloc((gradoMAX + 1) * sizeof(int));
//Si A fue de mayor grado
if(polMAX == 1){
/*Ciclo de copiado de los primeros coeficientes de A en
Res */
for(i=gradoMAX;i>polB.grado;i--){
polRes.coef[i]=polA.coef[i];
}
//Suma de coeficientes restantes
for(i=polB.grado;i>=0;i--){
polRes.coef[i]=polA.coef[i]+polB.coef[i];
}
}
//Si B fue de mayor grado
else{
/* Ciclo de copiado de los primeros coeficientes de B en
Res */
for(i=gradoMAX;i>polA.grado;i--){
polRes.coef[i]=polB.coef[i];
}
//Suma de coeficientes restantes
for(i=polA.grado;i>=0;i--){
polRes.coef[i]=polB.coef[i]+polA.coef[i];
}
}
return polRes;
}
// Función Principal
main(){
polinom polA, polB, polRes;
int i=0;
polA = LeePolinom();
if(polA.coef !=NULL){
polB = LeePolinom();
if(polB.coef != NULL){
polRes = SumaPolinom(polA,polB);
if(polRes.coef != NULL){
for(i=polRes.grado;i>=0;i--){
printf("+(%d)x^%d ",polRes.coef[i],i);
}
}
...