SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: mapechuca en Martes 28 de Julio de 2009, 12:36

Título: numero de digitos
Publicado por: mapechuca en Martes 28 de Julio de 2009, 12:36
Hola a todos tengo una opequenia duda con este ejercicio,

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, noles pido que me resuelvan el ejercici <_< o!!!!!!!
Título: Re: numero de digitos
Publicado por: haidion en Martes 28 de Julio de 2009, 19:54
El resto de dividir por 10 te da siempre el último digito de un numero, que deberia ser el primero del numero invertido. Entonces al resto de dividir por 10 lo multiplcas por 10^int(log(n)) y le sumas la funcion aplicada a n/10 y ya esta.
Título: Re: numero de digitos
Publicado por: mapechuca en Martes 28 de Julio de 2009, 21:46
hola haidion, gracias por la ayuda.......... pero no entendi nada))))
Título: Re: numero de digitos
Publicado por: m0skit0 en Miércoles 29 de Julio de 2009, 12:32
Cita de: "mapechuca"
pero no entendi nada))))
Pues repasa las mates
Título: Re: numero de digitos
Publicado por: diego.martinez en Jueves 30 de Julio de 2009, 10:58
Código: C++
  1.  
  2.  
  3. int CuentaDigitos(int Numero)
  4. {
  5.  
  6. for (e=1;;e++)
  7. {
  8. if (Numero < pow(10,e))
  9.    return e;
  10. }
  11. return 1;
  12.  
  13. }
  14.  
  15.  

o , aplicado a cualquier base:

Código: C++
  1.  
  2.  
  3. int CuentaDigitos(int Numero, int Base=10)
  4. {
  5.  
  6. for (e=1;;e++)
  7. {
  8. if (Numero < pow(Base,e))
  9.    return e;
  10. }
  11. return 1;
  12.  
  13. }
  14.  
  15.  
mas simple  :good:
Título: Re: numero de digitos
Publicado por: Leo_Gutierrez en Domingo 2 de Agosto de 2009, 03:36
A mi me funciona de esta manera, es la misma explicación que te han dado anteriormente:
Código: C
  1. #include <stdio.h>
  2. signed int digitos(signed int numero)
  3. {
  4.     signed int temporal, digitos = 0;
  5.     while(numero != 0)
  6.     {
  7.         temporal = numero % 10;
  8.         numero /= 10;
  9.         digitos++;
  10.     }
  11.     return digitos;
  12. }
  13.  
  14. int main(void)
  15. {
  16.     signed int numero;
  17.     do
  18.     {
  19.         printf("Numero : ");
  20.         setbuf(stdin, NULL);
  21.     } while(scanf("%d", &numero) != 1);
  22.     printf("%d = %d digitosn", numero, digitos(numero));
  23.     return 0;
  24. }
  25.  
  26.  
Salida:
leo@lein:~/Escritorio$ ./code
Numero : 12345
12345 = 5 digitos
leo@lein:~/Escritorio$
Título: Re: numero de digitos
Publicado por: mapechuca en Miércoles 5 de Agosto de 2009, 23:23
MUCHAS GRACIAS A TODOS, (NO SOY TAN BUENO EN MATEMATICAS)
Título: Re: numero de digitos
Publicado por: m0skit0 en Viernes 7 de Agosto de 2009, 12:03
Cita de: "mapechuca"
(NO SOY TAN BUENO EN MATEMATICAS)
Sí, dividir exige un conocimiento realmente profundo de las ciencias exactas por excelencia.

Consejo: ponte las pilas con las mates o dedícate a otra cosa