Comentando anécdotas de clase el otro día me acordé de un problema chorra de programación, de esos para que la gente se acostumbre a usar bucles, variables y tal: invertir el orden de las cifras de un número dado (por ejemplo, convertir el 768 en el 867). Lo primero era conocer el número de cifras del número dado. La solución dada fue jugar con sucesivas divisiones enteras y el resto que daban. Yo llamé al profesor y le dije y, ¿no es más simple tomar la parte entera del logaritmo decimal del número dado y sumarle 1? El profesor lo pensó unos momentos y me contestó ¿y cómo se lo explico a ellos?, señalando a mis compañeros. Y tenía razón, porque ahí había gente de ciencias y de letras y alguno que no había terminado bachillerato. Seguro que se pone a hablar de logaritmos y a más de uno le da un patatús.
Por otra parte, sigo pensando que mi forma es la más simple y elegante.
En que lenguaje? porque según cual sea, hay mas de una solución para saber la longitud de un numero.
Por cierto… ¿que algoritmo es el decia el profesor?
La asignatura era Fundamentos de Programación y no te puedo decir ahora mismo si ya estábamos con C++ o seguíamos con pseudocódigo.
El algoritmo no lo recuerdo, pero me imagino que sería tipo vas haciendo divisiones enteras sucesivas (entre diez) hasta que el cociente sea 0 y en cada división incrementas un contador.
En todo caso, tanto el método de las divisiones enteras sucesivas como el del logaritmo decimal son independientes del lenguaje empleado
Seguramente seria pseucodigo…
es que esos logaritmos no los conozco (cosas de ser de FP :P)