Autor
|
Tema: Las cifras que tiene un numero (Leído 8,170 veces)
|
mikel-mb
Desconectado
Mensajes: 9
|
Me reafirmo en mi respuesta: en sucesivos bucles no reseteas cont, por eso crece sin control.
Puedes solucionarlo y lo pruebo? Gracias de antemano
|
|
|
En línea
|
|
|
|
josue9243
Desconectado
Mensajes: 67
|
Ya te di el código solucionado, compilalo en otro programa, devc++ codeblocks, vc++ 2010 no sé.
|
|
|
En línea
|
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
Introduce entre la línea 17 y 18 una nueva con la instrucción: cont = 1;
|
|
|
En línea
|
|
|
|
mikel-mb
Desconectado
Mensajes: 9
|
sigue sin funcionar
|
|
|
En línea
|
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
Vale, muestra lo que tienes.
|
|
|
En línea
|
|
|
|
mikel-mb
Desconectado
Mensajes: 9
|
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h>
int cifras(int num1, int cont); int main() { int num1 = 0; int cont = 1; int numeros = 0; int cont2 = 0; char str[128]; printf("Cuantos numeros va a introducir? \n"); fgets(str, 128, stdin); sscanf(str, "%d", &numeros); while (cont2 < numeros) { cont = 1; printf("introduce un numero: \n"); fgets(str, 128,stdin); sscanf(str,"%d" , &num1); if (num1 > 0) { cont = cifras(num1, cont); printf("el numero tiene %d cifras \n", &cont); cont2++; } else { printf("introduce un numero positivo \n"); fgets(str, 128, stdin); sscanf(str, "%d", &num1); cont2 = 0; } } printf("pulse enter para finalizar..."); getchar(); return 0;
}
int cifras(int num1,int cont) { while (num1 / 10 > 0||num1/10==0) { num1 = num1 / 10; cont++; } return cont; }
|
|
|
En línea
|
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
El fallo lo tienes en printf("el numero tiene %d cifras \n", &cont); el apmersand sirve para obtener la dirección de memoria. Lo que ves es eso y no el dato que hay en él, es decir, el número de cifras de cada número. Quita & y listo.
|
|
|
En línea
|
|
|
|
mikel-mb
Desconectado
Mensajes: 9
|
de esa forma ni me saca el numero.
|
|
|
En línea
|
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
Dentro de la función int cifras() tienes el while así: while (num1 / 10 > 0||num1/10==0) Cuando num1 sea un número de un solo dígito el resultado será 0, la sentencia num1/10==0 hará que el bucle se repita y 0/10 = 0, por tanto estarás en un bucle infinito.
|
|
« Última modificación: 12 Noviembre 2017, 22:47 pm por MAFUS »
|
En línea
|
|
|
|
mikel-mb
Desconectado
Mensajes: 9
|
Todo solucionado gracias a todos!!!
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Rallada de numero de dos cifras
Programación C/C++
|
Komodo
|
3
|
3,040
|
30 Agosto 2010, 17:44 pm
por do-while
|
|
|
Contratar número de 4 cifras para SMS
Desarrollo Web
|
dimitrix
|
0
|
3,008
|
7 Enero 2011, 22:35 pm
por dimitrix
|
|
|
Como almacenar un numero de 10 cifras
« 1 2 »
Programación C/C++
|
Caster
|
10
|
4,815
|
30 Octubre 2012, 16:48 pm
por Caster
|
|
|
Constructor (String numero) copia cifras a un Array. AYUDA PORFAVOR
Java
|
chriwasch
|
0
|
1,775
|
7 Enero 2014, 13:32 pm
por chriwasch
|
|
|
Assembler programa que sume, reste, multiplique numero de 2 cifras.
ASM
|
AnubisQuero
|
0
|
7,679
|
12 Febrero 2016, 18:49 pm
por AnubisQuero
|
|