Autor
		 | 
		
			Tema: [C] [?] Problemas con suma de polinomios  (Leído 14,067 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
						 | 
						
							5,250
						 | 
						
							 
							
								 2 Julio 2004, 04:12 am 
								por soplo
							
						 | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							Polinomios
							 
							Java
						 | 
						
							soser
						 | 
						
							2
						 | 
						
							5,388
						 | 
						
							 
							
								 4 Octubre 2010, 07:28 am 
								por soser
							
						 | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							polinomios C
							 
							Programación C/C++
						 | 
						
							edgemx
						 | 
						
							0
						 | 
						
							5,049
						 | 
						
							 
							
								21 Julio 2011, 00:13 am 
								por edgemx
							
						 | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							Multiplicar polinomios y derivada
							 
							Java
						 | 
						
							piete2
						 | 
						
							1
						 | 
						
							5,331
						 | 
						
							 
							
								 5 Marzo 2015, 21:15 pm 
								por Usuario Invitado
							
						 | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							Problemas NP y problema de la suma de subconjuntos
							 
							Programación General
						 | 
						
							jca1
						 | 
						
							0
						 | 
						
							1,646
						 | 
						
							 
							
								25 Octubre 2023, 20:24 pm 
								por jca1
							
						 | 
					 
				 
			    |