nombre de digitos

mapechuca
30 de Julio del 2009
[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, noles pido que me resuelvan el ejercici <_< o!!!!!!!



glas
30 de Julio del 2009
HOLA, no se que compilador usaras pero yo utilizo el g++ en linux, similar al devc++, bueno aqui te dejo un programa que funciona a la perfeccion lo hice recien aca en g++, espero te sirva como guia cualquier cosa me escribes chao.

/*Escriba un afuncion iterativa

int numero_digits(int n);

que retorne el numero de digitos de n.

PRECONDICIO:
Se tiene que n>=0*/
#include<stdio.h>
main()
{
int n;
char numero[20];//hasta 20 caracteres o cualquier otra cantidad
int numero_digits(char n[20]);//lo mismo 20 caracteres
printf("escriba un numero cualquiera: ");
gets(numero); //recibe caracteres
n=numero_digits(numero);//recibe en n de tipo int
printf("cantidad de caracteres= %dn",n);
getchar();
return 0;
}
//funcion
int numero_digits(char n[20])
{
int x=0,i=0;
while(n[i]!='')//hacer hasta el fin de cadena
{
x=x*10+(n[i]-'0');//convierte caracteres numericos en valor numerico
i++; //sigte. caracter
}
printf("%dn",x);//imprime el valo numerico
return i;//en i quedan la cantidad de caracteres
}
//FIN DE PROGRAMA