[ Foro de C ]
En este primer mensaje voy a plantear una duda con respecto a uno de los ejercicios del curso de lenguaje C. Ocurre que he llegado al ejercicio de la página 56:
"Ejercicio propuesto: Crear un programa calcule cuantas cifras
tiene un número entero positivo (pista: se puede hacer dividiendo
varias veces entre 10)."Â
y no logro resolverlo, le doy vueltas y vueltas y no encuentro el
error. Incluso he recurrido a otras fuentes, como ya lo hice con el
ejercicio de la página 43. Pero esta vez no he tenido suerte.
A continuación el programa que he escrito utilizando el bucle WHILE
como lo indica el texto.
#include <stdio.h>
main()
{
     int y, z=1;
     float x; Â
     printf("Teclee un numero entero positivo: ");
     scanf("%f", &x);
     while (z!=0)
     {    Â
          if (x/10>=1)
            y++;
          else
          z=0;
          break; Â
     }       Â
     printf("El numero contiene %d digito/s \n", y);      Â
     printf("Fin del programa, presione una tecla para salir.\n");
     getch();
     exit(1);
     return 0;
}Â
Como podrán observar, he utilizado tres variables. Una para cargar el
número que el usuario ingrese "x", otra para contar los dÃgitos de ese
número "y" y la última para controlar el bucle "z". Ahora bien, cuando
lo compilo (utilizo dev-c++) y lo pruebo, ocurre que sin importar el
número que ingrese siempre da como resultado:
"El numero contiene 3 digito/s"
#include <stdio.h>
main()
{
int y, z=1;
float x;
printf("Teclee un numero entero positivo: ");
scanf("%f", &x);
while (z!=0)
{
if (x/10>=1) /* Nunca cambiara el resultado de la evaluacion */
y++; /*No esta inicializada */
else
z=0;
break; /*Esto para que? */
}
printf("El numero contiene %d digito/s \n", y);
printf("Fin del programa, presione una tecla para salir.\n");
getch();
exit(1);
return 0;
}
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)