Cita de: Shell Root en 15 Noviembre 2010, 23:59 PM
Pero entonces, sería un ciclo infinito?
no porque termine hasta que la suma llegue al valor n. que se esta buscando
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes MenúCita de: Shell Root en 15 Noviembre 2010, 23:59 PM
Pero entonces, sería un ciclo infinito?
Cita de: Akai en 15 Noviembre 2010, 20:57 PMif (ex==9999999 && numero==9999999)
while (sum!=n){
if (ex==9999999){
ex=0; cont+=1;
}
sum=0; ex+=1; numero=ex;
while(numero>0){
sum+=numero%10;
numero=numero/10;
}
cout<<ex<<" da el valor de: "<<sum<<endl;
cont+=1;
}
while (sum!=n){
sum=0; ex+=1; numero=ex;
if (ex==9999999 && numero==9999999){
ex=0; numero=1; cont+=1;
}
while(numero>0){
sum+=numero%10;
numero=numero/10;
}
cout<<ex<<" da el valor de:"<<sum<<endl;
cont+=1;
}
Cita de: Akai en 15 Noviembre 2010, 19:49 PM
Si lo introduces por teclado (por ejemplo) no da problema. El problema está en la forma que se declaran los enteros en C++:
Decimal: No empieza por 0 (para el literal 0 da igual la base).
Octal: Empiezan por 0. Ejemplo: 010 es como poner 8
Hexadecimal: Empiezan por 0x o por 0X.
Para los valores de 10 a 15 se utilizan las letras ABCDEF o también abcdef.
Entonces en el caso de que quieras trabajar con números del tipo 0xxxxx, lo tienes que introducir.
Cita de: Akai en 15 Noviembre 2010, 19:28 PM
El problema con el número que tu le has puesto, es que el 0031416 lo toma como un octal, es decir, un numero en base 8. (Por ejemplo, prueba con 00981 y el compilador debería avisarte de ello).
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;
}
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];
}
}
for (i=0;i<7;i++){
sum+=vec[i];
}
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;
}
Cita de: Castiblanco en 15 Noviembre 2010, 15:26 PM
int sumatoria=0;
for (int i=0; i<=7;i++)
{
sumatoria += V[i];
}
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.