C/Visual C - Convertir cadena de caracteres a entero(int)???

 
Vista:

Convertir cadena de caracteres a entero(int)???

Publicado por gregobm (1 intervención) el 14/05/2004 15:23:14
Tengo que hacer un programa que consiste en lo siguiente:

Pasando como parametro una cadena de caracteres que convierta esa cadena a numeros enteros(int)

Me han dicho que se hace con un switch, y luego un bucle que vaya leyendo cada letra , multiplicandola por 10 y asi.

Pero no se como meter la cadena en el switch si solo acepta enteros(int).Ayudenme, estoy muy pegado.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Convertir cadena de caracteres a entero(int)???

Publicado por Nicolas (183 intervenciones) el 14/05/2004 16:23:39
Hola!!

Mira esto: 1514 = 4 x 10^0 + 1 x 10^1 + 5 x 10^2 + 1 x 10^3

Entonces, la idea es q vos vas a tener una cadena de caracteres, la cual la vas a ir leyendo de caracter en caracter y verificando q lo q este en la cadena sean numeros (para esto podes utilizar la funcion isdigit() la cual es ANSI) y luego lo multiplicas por 10 elevado a lo q corresponda (mirando el ejemplo lo tenes q entender ) y asi haces lo q queres y listo.

Yendo al uso del SWITCH, la verdad yo en tu caso no lo utlizaria porque de la manera q dije recien no es necesario su uso o quizas si no se, habria q ver.
Lo q si es q vos haces :
SWITCH(opcion)
{
case '0' : bla();break;
case '1' : blabla();break;
case '2' : blabla();break;
...........
case '9' : blabla();break;

};

y cada numero q lees de la cadena verdaderamente es un caracter y vos despues lo casteas a int verificando si es un numero o un caracter lo q estas leyendo y LISTO

Fijate y cualquier cosa postea otra cosa

Salu2!!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Convertir cadena de caracteres a entero(int)???

Publicado por zzzz (6 intervenciones) el 15/05/2004 04:47:03
Lo puedes hacer con la funcion atoi que convierte una cadena en entero.
Necesitas la libreria stdlib.h
Ejemplo:
#include <stdlib.h>
#include <stdio.h>

int main(void)
{
int n;
char *str = "12345.67";

n = atoi(str);
printf("string = %s integer = %d\n", str, n);
return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Convertir cadena de caracteres a entero(int)???

Publicado por Nicolas (183 intervenciones) el 15/05/2004 15:16:58
Hola zzzz!!!

Tenes razon en eso, pero si estas leyendo algo q te manda el usuario deberias verificar q es lo q te esta mandando antes de convertirlo.
Q pasa con atoi o atof o uno de esos si tenes esto:

char* str = new char(10);
strcpy(str, "154afg");

int x = atoi(str);

El programa pincha o no, no se, pero lo q si se es q si despues trabajaras con ese "numero" se va todo al demonio

Salu2!!!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Convertir cadena de caracteres a entero(int)???

Publicado por peruxho (4 intervenciones) el 15/05/2004 23:01:13
No se exactamente lo que quieres hace, asi que no se si te servira de algo esto:

bueno si lo que quieres hacer es comprobar si es un numero o un caracter es muy facil.
si te fijas en el codigo ASCII el rango de valores asignados a los numeros va desde el 49 hasta el 59 (del 0 al 9) el resto pueden ser letras del alfabeto o simbolos, etc bueno pues si haces un switch

caracter=leer_caracter();
switch (caracter)
{
case 49: num=0;
break;
case 50: num=1;
break;
case 51: num=2;
break;
case 53: num=3;
break;
....
case 59: num=9;
break;
default: num=-1;
}

si num==-1 entonces no es un numero
sino
{
.............bla bla bla.........
}

espero que te ayude
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 11
Ha aumentado su posición en 5 puestos en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

RE:Convertir cadena de caracteres a entero(int)???

Publicado por para nicolas (318 intervenciones) el 16/05/2004 00:31:34
Hola! lo mas facil es usar atoi, se me olvido poner que antes tienes que validar que en verdad sea numero, y para checar que sean puros numeros puedes calcular el tamaño de la cadena con strlen(cadena), luego con un ciclo comparas caracter por cacaracter y con la funcion isdigit compruebas que sean numeros y si es todo correcto ahora si usas atoi, es mas facil y rapido que como tu dices.
ejemplo
int tam, num;
char c;
int aux=0;
char cadena[5];
printf ("Dame una cadena de numeros);
gets (cadena);
tam=strlen(cadena)
for (int i=0; i<tam; i++)
{
c=cadena[i];
if (!isdigit(c))
{
printf ("no es un numero valido");
aux=1;
}
}
if (aux==0) //la cadena cotiene solo numeros
/*que hasta aqui seria lo mismo que tu tendrias que hacer para convertirlo como tu dices con multliplicaciones */
una vez validado que sean puros numeros nomas harias esto y no todas las multliplicaciones que tu haces
num=atoi (cadena)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Convertir cadena de caracteres a entero(int)???

Publicado por Nicolas (183 intervenciones) el 16/05/2004 03:30:14
Tenes razon!!!!!!!!
Pero la idea es la misma, o no???
El atoi no es magico, hace o creo q hace algo parecido a lo q dije, aunque lo q dije puede ser menos eficiente q el uso directo de atoi, por lo tanto, TENES RAZON, y esta bueno q pasen estas cosas en los foros, le sirve a uno pra aprender mas y mas.

Lo otro q queria decir es q empecemos a mandarnos respuestas tales como:
"lo solucione, gracias"
"mira, gracias pero no era eso lo q necesitaba"
Digo esto para no estar leyendo de mas posts ya resueltos y dedicarnos a ver si podemos ayudar(nos) a otros.

Salu2!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar