• Sábado 14 de Diciembre de 2024, 14:50

Autor Tema:  numero de digitos  (Leído 2149 veces)

mapechuca

  • Miembro activo
  • **
  • Mensajes: 27
    • Ver Perfil
numero de digitos
« en: Martes 28 de Julio de 2009, 12:36 »
0
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 &lt;_&lt; o!!!!!!!

haidion

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Re: numero de digitos
« Respuesta #1 en: Martes 28 de Julio de 2009, 19:54 »
0
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.

mapechuca

  • Miembro activo
  • **
  • Mensajes: 27
    • Ver Perfil
Re: numero de digitos
« Respuesta #2 en: Martes 28 de Julio de 2009, 21:46 »
0
hola haidion, gracias por la ayuda.......... pero no entendi nada))))

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: numero de digitos
« Respuesta #3 en: Miércoles 29 de Julio de 2009, 12:32 »
0
Cita de: "mapechuca"
pero no entendi nada))))
Pues repasa las mates

diego.martinez

  • Miembro MUY activo
  • ***
  • Mensajes: 297
    • Ver Perfil
Re: numero de digitos
« Respuesta #4 en: Jueves 30 de Julio de 2009, 10:58 »
0
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:

Leo_Gutierrez

  • Visitante
Re: numero de digitos
« Respuesta #5 en: Domingo 2 de Agosto de 2009, 03:36 »
0
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$

mapechuca

  • Miembro activo
  • **
  • Mensajes: 27
    • Ver Perfil
Re: numero de digitos
« Respuesta #6 en: Miércoles 5 de Agosto de 2009, 23:23 »
0
MUCHAS GRACIAS A TODOS, (NO SOY TAN BUENO EN MATEMATICAS)

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: numero de digitos
« Respuesta #7 en: Viernes 7 de Agosto de 2009, 12:03 »
0
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