Como sumo los numeros de un entero hasta que me de "n" numeros (Resuelto)

Iniciado por ¡Micronet!, 15 Noviembre 2010, 15:22 PM

0 Miembros y 1 Visitante están viendo este tema.

¡Micronet!

CitarSupongamos que tengo 7 digitos, de esos 7 digitos me tiene que dar la suma del numero 30.

Yo ingreso el valor de 0031416, este valor sumando sus numeros me da el valor de 15.

Entonces tengo que sumarle un numero y volver a sumar ese numero. si mi numero llega al numero 9999999...y no me da el numero deceado regresarlo al numero 0000000.

Y saber cuantos numeros se le incrementa a 0031416 para que llegue al valor 30 en este ejemplo.


Mi pregunta es... como hago que un Int... sume sus valores 1 por uno...¿? y mantenerlo como int.

Ya que no encontre una manera facil de hacerlo... yo lo que utilice fue un vector

int V[0,0,3,1,4,1,6].... pero se me hace un codigo extenso con los excesos de if's que llego a utilizar.

Entonces esa es mi pregunta.

"La Tarea No Se Hace, Pero No Indica Que No Se Ayude Al Estudiante"

Castiblanco

Así como dices creas el vector y suponiendo que es de 7 entonces

Código (cpp) [Seleccionar]

int sumatoria=0;

for (int i=0; i<=7;i++)
{
sumatoria += V[i];
}


Y listo suma todos los términos y el resultado lo deja en "sumatoria", eso fue lo que entendí no se si sea eso lo que quieres ^^

Saludos...

¡Micronet!

Cita de: Castiblanco en 15 Noviembre 2010, 15:26 PM
Código (cpp) [Seleccionar]

int sumatoria=0;

for (int i=0; i<=7;i++)
{
sumatoria += V[i];
}



Castiblanco de echo asi lo hice... pero no lo quiero tener como vector lo quiero como un int. para que se me haga mas facil. 

Lo quiero como int... sume sus valores y que me arroje su resultado pero mantener como int y no como un vector. :S

"La Tarea No Se Hace, Pero No Indica Que No Se Ayude Al Estudiante"

Castiblanco

No le veo sentido la verdad y no sabría como hacerlo de una manera más sencilla si es que se puede...

Akai

Lo que tu buscas es tener un numero de la forma siguiente:

378981 y sumarlo así? 3+7+8+9+8+1

Estoy muy espeso porque me acabo de levantar de dormir, pero vendría a ser algo así:

sum=0;
while(numero<0){
sum=numero%10;
numero=numero/10;
}



¡Micronet!

Cita de: Akai en 15 Noviembre 2010, 16:49 PM
Lo que tu buscas es tener un numero de la forma siguiente:

378981 y sumarlo así? 3+7+8+9+8+1

Estoy muy espeso porque me acabo de levantar de dormir, pero vendría a ser algo así:

sum=0;
while(numero<0){
sum=numero%10;
numero=numero/10;
}

Acabo de ponerlo en practica ese ciclo. pero me deja el 0 cuando imprimo sum.
:S

(y si asi quiero sumarlo)...

porque use el numero 0031416... y no me efectua nada. ya que no es menor que 0 ... y si le cambio a mayor que 0 :S me hace un break... :S

"La Tarea No Se Hace, Pero No Indica Que No Se Ayude Al Estudiante"

xassiz~

Es que si puede introducir ceros creo que los vas a tener que meter en un array de int obligatoriamente.

Akai

#7
Fallo mio
dentro del bucle cámbialo por esto:

// tómese numero como el entero del que queremos sumar sus cifras
int sum=0;
while(numero>0){
sum+=numero%10;
numero=numero/10;
}



Ya comenté que andaba medio dormido.

Aunque introduzcas un numero como 0031416 si tu lo que quieres es sumarlo cifra a cifra, el bucle que te he puesto antes debería funcionar.

¡Micronet!

#8
Cita de: Akai en 15 Noviembre 2010, 18:48 PM
// tómese numero como el entero del que queremos sumar sus cifras
int sum=0;
while(numero>0){
sum+=numero%10;
numero=numero/10;
}




Ve como me sale ese codigo... :S podrias explicarmelo porfas :) esque checa lo que segun hago todo esto para hacer la suma... ha y la suma debe ser 15 :S

int vec[7]={0,0,3,1,4,1,6},ex[7]={0,0,0,0,0,0,0},sum=0,i;
for (i=0;i<7;i++){
sum+=vec[i];
}cout<<sum;
int cont=0;
while(sum!=33){
cont+=1;
if (vec[7]<9){
vec[7]+=1;
cont+=1;
}
if (vec[7]==9 && vec[6]<9){
vec[6]+=1;
cont+=1;
}
if (vec[7]==9 && vec[6]==9 && vec[5]<9){
vec[5]+=1;
cont+=1;
}
if (vec[7]==9 && vec[6]==9 && vec[5]==9 && vec[4]<9){
vec[4]+=1;
cont+=1;
}
if (vec[7]==9 && vec[6]==9 && vec[5]==9 && vec[4]==9 && vec[3]<9){
vec[3]+=1;
cont+=1;
}
if (vec[7]==9 && vec[6]==9 && vec[5]==9 && vec[4]==9 && vec[3]==9 && vec[2]<9){
vec[2]+=1;
cont+=1;
}
if (vec[7]==9 && vec[6]==9 && vec[5]==9 && vec[4]==9 && vec[3]==9 && vec[2]==9 && vec[1]<9){
vec[1]+=1;
cont+=1;
}
if (vec[7]==9 && vec[6]==9 && vec[5]==9 && vec[4]==9 && vec[3]==9 && vec[2]==9 && vec[1]==9){
vec[7]=0;
vec[6]=0;  
vec[5]=0;  
vec[4]=0;  
vec[3]=0;  
vec[2]=0;
vec[1]=0;
cont+=1;
}

sum=0;
for (i=0;i<7;i++){
sum+=vec[i];
}

}


Lo pongo para que se me haga valida la pregunta. :)
y esque si hago todo eso es una gran perdida de tiempo. :S jeje
y quisiera comprender tu codigo.
ya que veo que se hace un resultado mas factible que el mio :S



Bueno el codigo que puse es parte de lo que estoi haciendo...
en si el que suma solo es esto:


for (i=0;i<7;i++){
sum+=vec[i];
}



pero tu codigo hace mas elegante el problema

"La Tarea No Se Hace, Pero No Indica Que No Se Ayude Al Estudiante"

[L]ord [R]NA

Eso esta en los ejercicios de Projecteuler si no me equivoco.