Autor
|
Tema: [C] [?] Problemas con suma de polinomios (Leído 13,527 veces)
|
alt_369
Desconectado
Mensajes: 9
|
Buenas! El programa ha de sumar dos polinomios p(x) y q(x). Al imprimir los polinomios y la suma lo han de hacer con sus correspondientes x (x^2, x^3...), y la base de los polinomios puede ser hasta 10. No entiendo qué hago mal, porque cuando entro los siguientes datos: 3 1.2 0 -4.4 1. (los 3 del inicio corresponden al grado de los poliomios, y lo siguiente a las cifras) 3 -2. 1. 3.3 -1. me imprime: p(x) +1.2 -4.4x^2 +1x^3 q(x) -2 +1x +3.3x^2 -1x^3 suma: -0.8 +1x -1.1x^2 -2 Es el -2 en negrita el que no entiendo. Les dejo el código por si ven algún error, y muchas gracias de antemano: #include <stdio.h> int main(void){ int n, m, i; float polin_n[10]={0}, polin_m[10]={0}; char x[9][4]={{"x"},{"x^2"},{"x^3"},{"x^4"},{"x^5"},{"x^6"},{"x^7"},{"x^8"},{"x^9"}}; do{ /*introduccion de datos*/ printf("introducir el grado de p(x): "); scanf("%d", &n); }while(n<0 || n>10); for(i=0; i<=n; i++){ scanf("%f", &polin_n[i]); } do{ printf("introducir el grado de q(x): "); scanf("%d", &m); }while(m<0 || m>10); for(i=0; i<=m; i++){ scanf("%f", &polin_m[i]); } if(polin_n[0]!=0){ /*imprimir el primer polinomio*/ printf("\np(x) %+g", polin_n[0]); i=1; }else{ i=0; } for(i=i; i<=n; i++){ while(polin_n[i]==0) i++; printf(" %+g%s", polin_n[i], x[i-1]); } if(polin_m[0]!=0){ /*imprimir el segundo polinomio*/ printf("\nq(x) %+g", polin_m[0]); i=1; }else{ i=0; } for(i=i; i<=m; i++){ while(polin_m[i]==0) i++; printf(" %+g%s", polin_m[i], x[i-1]); } if(m>n) n=m; /*imprimir la suma del los polinomios*/ printf("\n\nsuma: %+g", polin_n[0]+polin_m[0]); for(i=1; i<=n; i++){ while((polin_n[i]+polin_m[i])==0) i++; printf(" %+g%s", polin_n[i]+polin_m[i], x[i-1]); } printf("\n"); return 0; }
|
|
« Última modificación: 24 Noviembre 2012, 13:17 pm por alt_369 »
|
En línea
|
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
Tienes un incremento de más cuando el último sumando es cero: #include <stdio.h> int main(void){ int n, m, i; float polin_n[10]={0}, polin_m[10]={0}; char x[9][4]={{"x"},{"x^2"},{"x^3"},{"x^4"},{"x^5"},{"x^6"},{"x^7"},{"x^8"},{"x^9"}}; do{ /*introduccion de datos*/ printf("introducir el grado de p(x): "); scanf("%d", &n); }while(n<0 || n>10); for(i=0; i<=n; i++){ scanf("%f", &polin_n[i]); } do{ printf("introducir el grado de q(x): "); scanf("%d", &m); }while(m<0 || m>10); for(i=0; i<=m; i++){ scanf("%f", &polin_m[i]); } if(polin_n[0]!=0){ /*imprimir el primer polinomio*/ printf("\np(x) %+g", polin_n[0]); i=1; }else{ i=0; } for(i=i; i<=n; i++){ while(polin_n[i]==0) i++; printf(" %+g%s", polin_n[i], x[i-1]); } if(polin_m[0]!=0){ /*imprimir el segundo polinomio*/ printf("\nq(x) %+g", polin_m[0]); i=1; }else{ i=0; } for(i=i; i<=m; i++){ while(polin_m[i]==0) i++; printf(" %+g%s", polin_m[i], x[i-1]); } if(m>n) n=m; /*imprimir la suma del los polinomios*/ printf("\n\nsuma: %+g", polin_n[0]+polin_m[0]); for(i=1; i<=n; i++){ while((polin_n[i]+polin_m[i])==0 && i<n) i++;/* <==aqui el i<n */ printf(" %+g%s", polin_n[i]+polin_m[i], x[i-1]); } printf("\n"); return 0; }
Saluditos!.
|
|
|
En línea
|
|
|
|
alt_369
Desconectado
Mensajes: 9
|
¡Muchas gracias! Lo he retocado para que no me imprima nada si la suma da 0: for(i=1; i<=n-1; i++){ while((polin_n[i]+polin_m[i])==0 && i<n) i++; printf(" %+g%s", polin_n[i]+polin_m[i], x[i-1]); } if((polin_n[i]+polin_m[i])!=0){ printf(" %+g%s\n", polin_n[i]+polin_m[i], x[i-1]); }else{ printf("\n"); } ¡Saludos!
|
|
|
En línea
|
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
Sólo una chorrada, cuando al if o else o while o ... sólo le sigue una instrucción no hace falta "envolverlas" con las llaves {}:if((polin_n[i]+polin_m[i])!=0) printf(" %+g%s\n", polin_n [i ]+polin_m [i ], x [i -1]); else
Y por cierto, al usar las etiquetas GesHi usa las de C++ ya que así el código sale coloreado y es más fácil seguirlo. Saluditos!.
|
|
|
En línea
|
|
|
|
alt_369
Desconectado
Mensajes: 9
|
Muchas gracias por la ayuda prestada!!
Ya he mirado cómo poner lo de las etiquetas GeSHi, para la próxima ya lo sé.
¡saludos!
|
|
« Última modificación: 28 Noviembre 2012, 22:37 pm por alt_369 »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
101 - suma euros
Ejercicios
|
Cobac
|
1
|
4,802
|
2 Julio 2004, 04:12 am
por soplo
|
|
|
Polinomios
Java
|
soser
|
2
|
5,132
|
4 Octubre 2010, 07:28 am
por soser
|
|
|
polinomios C
Programación C/C++
|
edgemx
|
0
|
4,812
|
21 Julio 2011, 00:13 am
por edgemx
|
|
|
Multiplicar polinomios y derivada
Java
|
piete2
|
1
|
5,054
|
5 Marzo 2015, 21:15 pm
por Usuario Invitado
|
|
|
Problemas NP y problema de la suma de subconjuntos
Programación General
|
jca1
|
0
|
1,202
|
25 Octubre 2023, 20:24 pm
por jca1
|
|