Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problemas con funcion atoi

Estas en el tema de Problemas con funcion atoi en el foro de C/C++ en Foros del Web. Que tal !! estoy haciendo un programa en C que debera correr en linux y lo que es que acepta una lista de numeros y ...
  #1 (permalink)  
Antiguo 22/04/2010, 10:27
 
Fecha de Ingreso: octubre-2007
Mensajes: 10
Antigüedad: 16 años, 6 meses
Puntos: 0
Problemas con funcion atoi

Que tal !!

estoy haciendo un programa en C que debera correr en linux y lo que es que acepta una lista de numeros y te indica cual es el mayor y cual el menor, esta sencillo, pero hay que hacer varias validaciones, como k la lista no pueda ser mayor de 100 numeros y k los numeros no tengan caracteres diferentes a digitos y es aki donde esta el problema.

para la validacion, capturo cada numero de la lista en una cadena (char cadena[]), despues con un simple if, comparo que todos los caracteres capturados sean numeros y si son puros numeros entonces con la funcion atoi convierto la cadena a numero para poder realizar las operaciones necesarias.

hasta aqui todo bien sin problemas, la bronca empieza cuando mi maestro lo corre, ha presionado todas las teclas del teclado, supr, insert, etc, y no ha logrado tronar el programa, pero al introducir un numero valido muy largo, el programa lo procesa mal.

Por ejemplo, esta es la salida del programa:


Cuantos numeros deseas accesar? 1

Introduce el valor numero 1 y da enter:
11111111111111111111111111111111111111111111111111 11111111111111111111


Lista de numeros:
-954437177

Mayor: -954437177
Menor: -954437177

como podran ver el numero de entrada son puros "unos" y el valor de salida que da el atoi es -954437177 ... como puedo solucionar esto?? de antemano gracias !! saludos !!
  #2 (permalink)  
Antiguo 22/04/2010, 11:51
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Problemas con funcion atoi

Debes de estar consiente que cada tipo de dato un valor fijo, por ejemplo:
char -> 8 bits; rango de valores -127 a 128

Es normal que al insertar valores que no caben en un float o en double o en un long long. El programa de un valor que no fue el insertado.

Para evitar esto necesitar manejar otras librerias que te permitan una precision arbitraria (o sea que el unico limite para representar un numero es la cantidad de memoria de la maquina).

Precisión arbitraria

Etiquetas: funcion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:17.