Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: jfap45 en 8 Agosto 2012, 20:02 pm



Título: Convertir matriz Char a Int con atoi
Publicado por: jfap45 en 8 Agosto 2012, 20:02 pm
Disculpen, quiero convertir el contenido de una matriz q leo como char y luego copiarla a otra matriz pero como entero (usando atoi), ya lo intente pero supongo q algo tengo mal:

Ejemplo: tengo la siguiente mariz

123 45
12 67
44 89
123 678

estan los numeros separados ppor espacios pero cuando lo hago no me lee bien, aki el codigo

Código:
[code]char* M[filas][columnas];
for (i=0; i<filas;i++)
            for (j=0;j<columnas;j++)
            Mat[i][j]= atoi(M[i][j]);

[/code]
y no hace lo q quiero sino q imprime por ejemplo:
1  23
4  5
12  6
7  4
89

y ni termina de imprimirlos, espero me puedan ayudar xfavor


Título: Re: Convertir matriz Char a Int con atoi
Publicado por: X3R4CK3R en 8 Agosto 2012, 21:10 pm
No acostumbro a usar atoi, pero puedo recomendarte que pruebes a usar:

C -> http://www.cplusplus.com/reference/clibrary/cstdio/sprintf/
C++ -> http://www.cplusplus.com/reference/iostream/stringstream/

Si tienes problemas o no sabes como usarlas hazlo saber y te pongo unos ejemplos cuando pueda. ;)

Saludos


Título: Re: Convertir matriz Char a Int con atoi
Publicado por: jfap45 en 8 Agosto 2012, 21:29 pm
Gracias, estudiare lo que me mandas!

Cabe decir que si en la matriz posicion 0,0 tengo '147' al convertirlo a entero quiero ese mismo valor, no su ekivalente en ASCII!

Si tienes algunos ejemplos, pasamelos xfavor!!

Gracias y saludos!!


Título: Re: Convertir matriz Char a Int con atoi
Publicado por: X3R4CK3R en 8 Agosto 2012, 21:49 pm
Al pensar en los ejemplos me he dado cuenta de que las funciones que te propuse sirven para pasar enteros a cadena de texto, no al contrario, así que retiro lo anterior. :-X

Por otra parte, creo que te sería más fácil hacer un array de string ( string[] ) donde almacenes cada línea de enteros, a no ser que el programa tenga que ser en C y no C++... Tampoco sé exactamente lo que quieres, podrías explicar el fin de tu programa y quizás así pueda ayudarte más.

Cabe decir que si en la matriz posicion 0,0 tengo '147' al convertirlo a entero quiero ese mismo valor, no su ekivalente en ASCII!

Obviamente, de lo contrario bastaría con (int)147 :xD Pero... en M[0][0] no puede haber un "147". :silbar:

Saludos


Título: Re: Convertir matriz Char a Int con atoi
Publicado por: durasno en 8 Agosto 2012, 23:11 pm
Hola! la funcion atoi convierte la parte inicial de una cadena siempre y cuando sea un numero. Si vos tenes la cadena: "123 45" atoi solo va a convertir la subcadena "123" a int, ya que despues del '3' hay un espacio(no es un numero por lo tanto deja de convertir). Fijate como haces para convertir el "45" tambien(tal vez strtok te sirva como ayuda)


Aclaracion:
Código
  1. char* M[filas][columnas];
esto es una matriz de punteros a char, es decir cada posicion de la matriz es un puntero
Código
  1. char M[filas][columnas];
esto es una matriz char, es decir cada posicion de la matriz es un char

Aclare esto porque hay una diferencia importante, y como subiste muy poco codigo nose si realmente queres usar una matriz de punteros.


Saludos


Título: Re: Convertir matriz Char a Int con atoi
Publicado por: BlackZeroX en 9 Agosto 2012, 02:46 am
para hacer una conversion de string a numero tienes las funciones

http://www.cplusplus.com/reference/clibrary/cstdlib/strtol/
http://www.cplusplus.com/reference/clibrary/cstdlib/strtod/
http://www.cplusplus.com/reference/clibrary/cstdlib/strtoul/

etc...

Dulces Lunas!¡.