• Sábado 14 de Diciembre de 2024, 22:44

Autor Tema:  Rsultado Erroneo  (Leído 1261 veces)

cltomas

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Rsultado Erroneo
« en: Miércoles 9 de Marzo de 2011, 17:48 »
0
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:

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: Rsultado Erroneo
« Respuesta #1 en: Miércoles 9 de Marzo de 2011, 17:58 »
0
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 :)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

cltomas

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: Rsultado Erroneo
« Respuesta #2 en: Miércoles 9 de Marzo de 2011, 18:20 »
0
Gracias y yo dandome de  :brickwall:  y la solución era "fácil".... otra nota para mis apuntes  :good: