Autor
|
Tema: Ejercicio en C... (Leído 3,622 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
|
3,941
|
13 Mayo 2005, 17:42 pm
por ieman
|
|
|
Ejercicio en C
Ejercicios
|
ߣ@î§
|
3
|
10,855
|
4 Septiembre 2005, 06:31 am
por ߣ@î§
|
|
|
Help Ejercicio 122 en C
Ejercicios
|
ANELKAOS
|
4
|
5,189
|
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
|
16,655
|
5 Septiembre 2010, 02:57 am
por TGa.
|
|
|
ejercicio conclase pag 70 ejercicio 1
Programación C/C++
|
flony
|
2
|
4,596
|
17 Octubre 2010, 12:16 pm
por Akai
|
|