C/Visual C - numero de digitos

 
Vista:

numero de digitos

Publicado por mapechuca (6 intervenciones) el 28/07/2009 13:19:45
[b]Hola a todos tengo una opequenia duda con este ejercicio,[/b]

Escriba un afuncion iterativa

int numero_digits(int n);

que retorne el numero de digitos de n.

PRECONDICIO:
Se tiene que n>=0
-----------------------------------------------------
lo que hice hasta ahora es lo sgte:

#include<iostream.h>
int numero_digits(int n);
int main();
int n;
cout<<"escriba el digito:"<<endl;
cin>>n;
cout<<"el numero de digitos sera:"<<numero_digits(n)<<endl;
cin.ignore();
cin.get();
return 0;
}
int numero_digits(int n){
return ceil(log10(numero_digits(n)));
}

la parte de definicion es la que me falta. para mi hacer un definicion siempere es lo mas complicado en c++.gracias de antemano por la consulta que puedan brindar,
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:numero de digitos

Publicado por R.G.A.M. (3 intervenciones) el 28/07/2009 20:35:48
Usar log10 es un tanto arriesgado por su precisión limitada, especialmente cuando se trata de números grandes.

Te recomiendo que crees un contador de tipo entero, cuyo valor inicial sea 1. Haz que tu número n se convierta a su valor absoluto.

Luego, mientras n sea mayor que 10, aumenta el valor del contador en 1, y divide entre 10 el número n.

No te doy el código directo para que tú lo diseñes. ;-)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:numero de digitos

Publicado por eduardo (82 intervenciones) el 28/07/2009 23:31:23
Bueno yo hice algo similar a lo que ya te mencionaron, sólo que de una manera algo distinta.

/* devuelve el número de dígitos de "num" */
int obtNumDig( unsigned long int num )
{
int n = 0;

while ( num > 0 ) {
num = num / 10;
n = n + 1;
}

return n;
}

Salu2.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:numero de digitos

Publicado por R.G.A.M. (3 intervenciones) el 29/07/2009 04:52:01
El único problema con ese código, Eduardo, es que te dirá que el 0 no tiene dígitos (cuando tiene un dígito, en realidad).

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:numero de digitos

Publicado por eduardo (82 intervenciones) el 29/07/2009 16:32:26
Bueno si tienes razón, había considerado para n > 0, pero sólo bastaría un pequeño cambio.

/* devuelve el número de dígitos de "num" */
int obtNumDig( unsigned long num )
{
int n;

if ( num == 0 )
return 1;

n = 0;
while ( num > 0 ) {
num = num / 10;
n = n + 1;
}

return n;
}

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar