elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [C] [?] Problemas con suma de polinomios
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [C] [?] Problemas con suma de polinomios  (Leído 13,248 veces)
alt_369

Desconectado Desconectado

Mensajes: 9


Ver Perfil
[C] [?] Problemas con suma de polinomios
« en: 24 Noviembre 2012, 12:29 pm »

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:
Código:
#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 Desconectado

Mensajes: 1.314


Ver Perfil
Re: [C] [?] Problemas con suma de polinomios
« Respuesta #1 en: 24 Noviembre 2012, 15:24 pm »

Citar
Tienes un incremento de más cuando el último sumando es cero:
Código
  1. #include <stdio.h>
  2. int main(void){
  3. int n, m, i;
  4. float polin_n[10]={0}, polin_m[10]={0};
  5. char x[9][4]={{"x"},{"x^2"},{"x^3"},{"x^4"},{"x^5"},{"x^6"},{"x^7"},{"x^8"},{"x^9"}};
  6. do{ /*introduccion de datos*/
  7. printf("introducir el grado de p(x): ");
  8. scanf("%d", &n);
  9. }while(n<0 || n>10);
  10. for(i=0; i<=n; i++){
  11. scanf("%f", &polin_n[i]);
  12. }
  13. do{
  14. printf("introducir el grado de q(x): ");
  15. scanf("%d", &m);
  16. }while(m<0 || m>10);
  17. for(i=0; i<=m; i++){
  18. scanf("%f", &polin_m[i]);
  19. }
  20. if(polin_n[0]!=0){ /*imprimir el primer polinomio*/
  21. printf("\np(x) %+g", polin_n[0]);
  22. i=1;
  23. }else{
  24. i=0;
  25. }
  26. for(i=i; i<=n; i++){
  27. while(polin_n[i]==0) i++;
  28. printf(" %+g%s", polin_n[i], x[i-1]);
  29. }
  30. if(polin_m[0]!=0){ /*imprimir el segundo polinomio*/
  31. printf("\nq(x) %+g", polin_m[0]);
  32. i=1;
  33. }else{
  34. i=0;
  35. }
  36. for(i=i; i<=m; i++){
  37. while(polin_m[i]==0) i++;
  38. printf(" %+g%s", polin_m[i], x[i-1]);
  39. }
  40. if(m>n) n=m; /*imprimir la suma del los polinomios*/
  41. printf("\n\nsuma: %+g", polin_n[0]+polin_m[0]);
  42. for(i=1; i<=n; i++){
  43.  
  44. while((polin_n[i]+polin_m[i])==0 && i<n) i++;/* <==aqui el i<n */
  45.            printf(" %+g%s", polin_n[i]+polin_m[i], x[i-1]);
  46.             }
  47. printf("\n");
  48. return 0;
  49. }
  50.  
Saluditos!.


En línea

alt_369

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: [C] [?] Problemas con suma de polinomios
« Respuesta #2 en: 24 Noviembre 2012, 15:49 pm »

¡Muchas gracias!

Lo he retocado para que no me imprima nada si la suma da 0:

Código:
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 Desconectado

Mensajes: 1.314


Ver Perfil
Re: [C] [?] Problemas con suma de polinomios
« Respuesta #3 en: 24 Noviembre 2012, 16:54 pm »

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 {}:
Código
  1. if((polin_n[i]+polin_m[i])!=0)
  2.                printf(" %+g%s\n", polin_n[i]+polin_m[i], x[i-1]);
  3.            else
  4.                printf("\n");
Citar
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 Desconectado

Mensajes: 9


Ver Perfil
Re: [C] [?] Problemas con suma de polinomios
« Respuesta #4 en: 28 Noviembre 2012, 22:34 pm »

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

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
101 - suma euros
Ejercicios
Cobac 1 4,661 Último mensaje 2 Julio 2004, 04:12 am
por soplo
Polinomios
Java
soser 2 5,007 Último mensaje 4 Octubre 2010, 07:28 am
por soser
polinomios C
Programación C/C++
edgemx 0 4,648 Último mensaje 21 Julio 2011, 00:13 am
por edgemx
Multiplicar polinomios y derivada
Java
piete2 1 4,902 Último mensaje 5 Marzo 2015, 21:15 pm
por Usuario Invitado
Problemas NP y problema de la suma de subconjuntos
Programación General
jca1 0 897 Último mensaje 25 Octubre 2023, 20:24 pm
por jca1
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines