Autor
		 | 
		
			Tema: Ejercicio en C...  (Leído 4,046 veces)
		 | 
	 
 
	
		
			
				
					
						
							SonaArtica
							
								
								  Desconectado
								Mensajes: 53
								
								 
								Estudiando...♥
								
								
								
								
								
								  
								 
							 
						 | 
						
							
							 
							
Bueno antes que nada quiero aclarar a los MOD, que acalro en el post hasta donde llegue pero despues no puedo continuar quiero que me den una mano, no que me lo resuelvan   Ejercicio: Confeccionar un programa que solicite el ingreso de un numero entero positivo de 4 cifras y pueda calcular e informar la suma de sus digitos hasta llegar a una sola cifra. Ej: 2561 -> 5   El tema es que yo sumo por ejemplo 2+5+6+1= 14 lo separo 1+4= 5    Otro ejemplo: 1934=1+9+3+4=17=1+7=8    Ahora una vez entendido el problema pasa que nose como hacerlo en el diagrama de lógica y menos en código porque nose que operación debo realizar. Yo si divido por ejemplo 2561/100= 25.61 Ahi me los separa x coma pero como hago para que agarre de a dos numeros y los sume por separados y luego los resultados los sume quedando un solo numero al final :/ 
  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									En línea
								 | 
							  
							 
							  <z  
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						
							xiruko
							
								 
								
								  Desconectado
								Mensajes: 438
								
								
								
								
								
								  
							 
						 | 
						
							
							 
							
hola, se me ha ocurrido una manera aunque no se si seria la mejor manera de hacerlo, aunque funcionar funcionaria:
  1. pides que se ingrese el entero. 2. coges el entero y lo pasas a una cadena de caracteres con la funcion itoa (en string.h). 3. ahora cada caracter lo pasas a entero con la funcion atoi de la misma libreria y los sumas. 4. repites el proceso hasta que te quede 1 digito.
  en caso que no puedas usar funciones externas, entonces seguro que habria un metodo mejor de hacerlo... pero siempre puedes hacerlas tu y aunque sea dar un poco de rodeo al menos funcionaria y ya tendrias algo.
  un saludo! 
  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									En línea
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						
							durasno
							
								 
								
								  Desconectado
								Mensajes: 373
								
								
								
								
								
								  
							 
						 | 
						
							
							 
							
Hola! para resolver lo que queres hacer necesitas el operador %.
  Siguiendo tu ejemplo: 1934=1+9+3+4=17=1+7=8. Usando el operador %:
  1º 1934%10 -> resto=4 2º 1934/10 -> result=193 3º 193%10 -> resto=3 4º 193/10 -> result=19 5º 19%10 -> resto=9 6º 19/10 -> result=1 7º 1%10 -> resto=1
  Fijate que si sumamos los resto seria igual a 17. Lo mismo tenes que aplicar al numero 17 y tener como condicion final algo como:  si sumaResto < 10     salir;
 
  Saludos
  PD: consejo no intentes hacer todo de una, primera intenta obtener el 17 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									En línea
								 | 
							  
							 
							Ahorrate una pregunta, lee el man 
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						
							twins
							
								
								  Desconectado
								Mensajes: 54
								
								
								
								
								
								  
							 
						 | 
						
							
							 
							
Hola ya hize el ejercicio me costo un poco pero al fin salio cualquier cosa me preguntas cordiales saludos.
  #include<stdio.h> int main(void){    int num;    int r1=0,r2=0,r3=0,s=0,s2=0,total=0;    do{       printf("ingrese numero de 4 cifras\n");       scanf("%i",&num);       if(num<1000 || num>9999)          printf("el numero esta fuera del rango\n");    }while(num<1000 || num>9999);    printf("primera descomposicion\n");     while(num>0){       r1=num/10;//al dividir por 10 nos queda por ejemplo 1943/10=194,3       r2=r1*10;//al multiplicar por 10 nos queda 1940       r3=num-r2;//al restar nos queda 1943-1940=3       printf("r3= %i\t",r3);       num=r1;//ahora el num no vale 1943 si no 194 y asi susesivamente COMO ES DE TIPO ENTERO SIEMPRE NOS QUEDARA AISLADO EL DECIMAL DE ESTA FORMA PODEMOS CAPTURARLO        r1=r1/10;       s+=r3;    }    printf("\n");    printf("resultado de la primera suma %i\n",s);    r1=0,r2=0,r3=0;    printf("\n");     if(s>10){       printf("segunda descomposicion\n");       r1=s/10;       r2=r1*10;       r3=s-r2;       printf("r1= %i\t",r1);       printf("r3= %i\t",r3);    }        s2=r1+r3;    printf("resultado de la segunda suma %i\n",s2);       total+=s+s2;    printf("\nsuma total = %i\n",total); return(0); }    
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									En línea
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						
							ecfisa
							
								
								  Desconectado
								Mensajes: 114
								
								
								
								
								
								  
							 
						 | 
						
							
							 
							
Hola. int sumardigitos(int nro) { int suma=0;   while (nro) {     suma += nro % 10;     nro = nro / 10;   }   return suma; }   
 
 Saludos.  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									En línea
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						
							SonaArtica
							
								
								  Desconectado
								Mensajes: 53
								
								 
								Estudiando...♥
								
								
								
								
								
								  
								 
							 
						 | 
						
							
							 
							
Hola ya hize el ejercicio me costo un poco pero al fin salio cualquier cosa me preguntas cordiales saludos.
  #include<stdio.h> int main(void){    int num;    int r1=0,r2=0,r3=0,s=0,s2=0,total=0;    do{       printf("ingrese numero de 4 cifras\n");       scanf("%i",&num);       if(num<1000 || num>9999)          printf("el numero esta fuera del rango\n");    }while(num<1000 || num>9999);    printf("primera descomposicion\n");     while(num>0){       r1=num/10;//al dividir por 10 nos queda por ejemplo 1943/10=194,3       r2=r1*10;//al multiplicar por 10 nos queda 1940       r3=num-r2;//al restar nos queda 1943-1940=3       printf("r3= %i\t",r3);       num=r1;//ahora el num no vale 1943 si no 194 y asi susesivamente COMO ES DE TIPO ENTERO SIEMPRE NOS QUEDARA AISLADO EL DECIMAL DE ESTA FORMA PODEMOS CAPTURARLO        r1=r1/10;       s+=r3;    }    printf("\n");    printf("resultado de la primera suma %i\n",s);    r1=0,r2=0,r3=0;    printf("\n");     if(s>10){       printf("segunda descomposicion\n");       r1=s/10;       r2=r1*10;       r3=s-r2;       printf("r1= %i\t",r1);       printf("r3= %i\t",r3);    }        s2=r1+r3;    printf("resultado de la segunda suma %i\n",s2);       total+=s+s2;    printf("\nsuma total = %i\n",total); return(0); }   
  Gracias Twins por tomarte las molestias    Lo probe y anda perfecto. ^^ Ahora empiezo x mis dudas o mejor dichos partes que no entendi XD. while(num>0){ 		r1=num/10;//al dividir por 10 nos queda por ejemplo 1943/10=194,3 		r2=r1*10;//al multiplicar por 10 nos queda 1940 		r3=num-r2;//al restar nos queda 1943-1940=3 		printf("r3= %i\t",r3); 		num=r1;//ahora el num no vale 1943 si no 194 y asi susesivamente COMO ES DE TIPO ENTERO SIEMPRE NOS QUEDARA AISLADO EL DECIMAL DE ESTA FORMA PODEMOS CAPTURARLO 	    r1=r1/10; 		s+=r3; 	}En R1 hago la cuenta 1943/10=194.3 pero si lo multiplico x 10 da 1943 Xd En r3 cmo te diste cuenta que habia que hacer una diferencia? Gracias y disculpa x las preguntas jeje  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									En línea
								 | 
							  
							 
							  <z  
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						
							avesudra
							
								 
								
								  Desconectado
								Mensajes: 724
								
								 
								Intentando ser mejor cada día :)
								
								
								
								
								
								  
							 
						 | 
						
							
							 
							
En R1 hago la cuenta 1943/10=194.3 pero si lo multiplico x 10 da 1943 Xd En r3 cmo te diste cuenta que habia que hacer una diferencia? Gracias y disculpa x las preguntas jeje
  Esas variables son enteras por lo tanto si haces una operación que salga con punto flotante , desprecia los decimales, entonces en R1 que daría 194 y si lo multiplicas por diez 1940.A ver si leemos los comentarios del código que para algo están     
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									En línea
								 | 
							  
							 
							Regístrate en    
						 | 
					 
				 
			 |  
		 
	 |  
	 |  
 
	 
	
 
			 
			
				
					
						| Mensajes similares | 
					 
					
						 | 
						Asunto | 
						Iniciado por | 
						Respuestas | 
						Vistas | 
						Último mensaje | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							ejercicio 506
							 
							Ejercicios
						 | 
						
							ieman
						 | 
						
							0
						 | 
						
							4,157
						 | 
						
							 
							
								13 Mayo 2005, 17:42 pm 
								por ieman
							
						 | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							Ejercicio en C
							 
							Ejercicios
						 | 
						
							ߣ@î§
						 | 
						
							3
						 | 
						
							11,293
						 | 
						
							 
							
								 4 Septiembre 2005, 06:31 am 
								por ߣ@î§
							
						 | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							Help Ejercicio 122 en C
							 
							Ejercicios
						 | 
						
							ANELKAOS
						 | 
						
							4
						 | 
						
							5,612
						 | 
						
							 
							
								15 Septiembre 2005, 23:41 pm 
								por Arcangel_RZ
							
						 | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							[Ejercicio] Aca tienen un ejercicio para practicar
							« 1 2 3 » 
							Programación Visual Basic
						 | 
						
							Dreamaker
						 | 
						
							20
						 | 
						
							18,393
						 | 
						
							 
							
								 5 Septiembre 2010, 02:57 am 
								por TGa.
							
						 | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							ejercicio conclase pag 70 ejercicio 1
							 
							Programación C/C++
						 | 
						
							flony
						 | 
						
							2
						 | 
						
							5,195
						 | 
						
							 
							
								17 Octubre 2010, 12:16 pm 
								por Akai
							
						 | 
					 
				 
			    |