SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: cltomas en Miércoles 9 de Marzo de 2011, 17:48

Título: Rsultado Erroneo
Publicado por: cltomas en Miércoles 9 de Marzo de 2011, 17:48
Porque el siguiente codigo no se ejecuta bien:
Código: C
  1. #include <stdio.h>
  2. /* Crear un programa calcule cuantas cifras tiene un número entero positivo (pista: se
  3. puede hacer dividiendo varias veces entre 10)*/
  4.  
  5. int main()
  6. {
  7.   int num;
  8.   int num2;
  9.  
  10.   printf("nIntroduce un numero:");
  11.   scanf("%d", &num);
  12.   while (num > 1)
  13.   {
  14.    printf("nEl Número %d tiene %d cifras positivasn", num, num2);
  15.    num /=10;
  16.    num2 = (num / 10);
  17.    }  
  18.    getchar();
  19.    return;  
  20. }
  21.  
Al hacer la primera division de cualquier número me genera un valor  erroneo para num2, pero en las siguientes divisiones me genera bien el valor de num 2,Aquí  el código en ejecución:
Citar
Introduce un numero:12345
El Número 12345 tiene -1081048328 cifras positivas
El Número 1234 tiene 123 cifras positivas
El Número 123 tiene 12 cifras positivas
El Número 12 tiene 1 cifras positivas
  :unsure:
Título: Re: Rsultado Erroneo
Publicado por: ProfesorX en Miércoles 9 de Marzo de 2011, 17:58
El problema esta en que no le estas asignando un valor a num2 antes de imprimirlo, por lo tanto num2 contiene un valor "basura" y es ese el valor el que te imprime.

La solucion me parece que seria asignarle valor antes de imprimirlo, seria algo mas o menos asi:

Código: C++
  1.  
  2. #include <stdio.h>
  3. /* Crear un programa calcule cuantas cifras tiene un número entero positivo (pista: se
  4. puede hacer dividiendo varias veces entre 10)*/
  5.  
  6. int main()
  7. {
  8.   int num;
  9.   int num2;
  10.  
  11.   printf("nIntroduce un numero:");
  12.   scanf("%d", &num);
  13.   while (num > 1)
  14.   {
  15.    // asignar a num2 un valor antes de imprimir
  16.    num2 = (num / 10);
  17.    printf("nEl Número %d tiene %d cifras positivasn", num, num2);
  18.    num /=10;
  19.    }  
  20.    getchar();
  21.    return;  
  22. }
  23.  
  24.  

Saludos :)
Título: Re: Rsultado Erroneo
Publicado por: cltomas en Miércoles 9 de Marzo de 2011, 18:20
Gracias y yo dandome de  :brickwall:  y la solución era "fácil".... otra nota para mis apuntes  :good: