[C con Clase] Contar los digitos de un numero

Programante programante en gmail.com
Dom Nov 7 00:20:13 CET 2010


El 06/11/10 17:30, Toni escribió:
> Hola,
>
> He hecho el siguiente codigo:
>
> #include<iostream>
> using namespace std;
>
> int iesimo(int N, int i){
>   int comparador,resultado;
>   comparador=1;
>   resultado=1;
>
>      for (int j=0;j<i;j++){
> comparador*=10;
>      }
>     if (comparador/10<N){
> resultado=N%comparador;
> comparador/=10;
>  if (comparador!=0){
>    resultado/=comparador;
>  }
>
>     }else{
> resultado=-1;
>     }
>   return resultado;
> }
>
> int main(){
> int num,digitos;
>
> cout<<"Introduzca un numero: \n";
> cin>>num;
>
> digitos=0;
>
>    while (iesimo(num,digitos)!=-1){
> digitos++;
>    }
> digitos--;
>
> cout<<"Tiene "<<digitos<<" digitos\n";
>
> return 0;
> }
>
>
> Lo que quiero que haga ese programa es en primer lugar, al insertar un
> numero cualquiera me diga cuantos digitos componen ese numero, por
> ejemplo 35435 son 5 digitos.
> El problema que tengo es que cuando introduzco un numero de 9 o más
> digitos, el resultado que me devuelve es erroneo.
>
> Una vez sepa los digitos que tiene, tengo que sumar las posiciones
> simetricas, (el primero con el ultimo, el segundo con penultimo)
> aunque para esto ya haré su implementación, pero primero necesitaria
> el resultado correcto de los digitos que forman ese numero.
>
> Agradecería cualquier comentario o ayuda.
>
> Saludos,
Tu problema está en la precisión de las variables. Estás usando
variables tipo int, lo que serán valores de 32 bits en la mayoría de las
plataformas, por lo tanto, valores de -2147483648 a 2147483647.
Puedes aumentar la precisión cambiando el tipo a long long int, pero lo
que es el problema, está resuelto.


------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20101107/ca82de35/attachment.html>


Más información sobre la lista de distribución Cconclase