Como separar de una cadena solo numeros y sumarlos

Moderador: yalmar

Foro cerrado salvo peticion.

Como separar de una cadena solo numeros y sumarlos

Notapor magnate » Lun Jun 18, 2007 12:25 am

no se si me pueden ayudar el problema es el siguiente
teniendo la cadena siguiente:
21x+3y=4

quisiera q el programa me sume:
21+3+4


alguien tiene alguna idea??????
magnate
Novato
Novato
 
Mensajes: 14
Registrado: Lun Jun 18, 2007 12:14 am


Re: Como separar de una cadena solo numeros y sumarlos

Notapor yalmar » Lun Jun 18, 2007 9:33 pm

Hola,

puedes identificar los numeros por su código ascii, caracter '0' = 48 printf("%d", "0");

creas una lista de char* donde cada elemento de la lista es un grupo de caracteres numéricos contiguos, luego recorrer toda la lista convirtiendo cada char* en tipo numerico y los vas sumando en un acumulador, simple no?

Una forma simple es usar expresiones regulares, hay várias bibliotecas para c y c++,

Salu2.
Avatar de Usuario
yalmar
Colaborador
Colaborador
 
Mensajes: 264
Registrado: Mié Jun 09, 2004 4:14 pm
Ubicación: Brasil


Re: Como separar de una cadena solo numeros y sumarlos

Notapor magnate » Mar Jun 19, 2007 12:51 pm

esa es una buena opcion pero si lo hago asi:
tomemos el ejemplo anterior:
21x+3y=4;
me sumaria 2+1+3+4=9
pero ese resultado es falso...el correcto seria:
21+3+4=28...

Bueno si me ekivoco haganmelo saber :D ...

SALUDOS....
magnate
Novato
Novato
 
Mensajes: 14
Registrado: Lun Jun 18, 2007 12:14 am

Re: Como separar de una cadena solo numeros y sumarlos

Notapor yalmar » Mar Jun 19, 2007 11:46 pm

No mi estimado, debes crear otra char* solo cuando haya caracteres no sean numéricos. El código sería algo como:

...
char str[] = "21x+3343y=4";
int i = 0
int sum = 0;
do{
int k = 0;
char buf[A_SIZE];
char c = str[i];

do{
buf[k++] = str[i++];
}while( (int)str[i] > 47 && (int)str[i] < 58);

sum += strtoint(buf);

do{
}while( str[++i] < 48 && (int)str[i] > 57);

}while(str[i] != '\0');


La idea es esa. Usando string de c++ sería mas fácil y si usas expresiones regulares, no es mas de 4 lineas de código.

Salu2.
Avatar de Usuario
yalmar
Colaborador
Colaborador
 
Mensajes: 264
Registrado: Mié Jun 09, 2004 4:14 pm
Ubicación: Brasil

Re: Como separar de una cadena solo numeros y sumarlos

Notapor magnate » Mié Jun 20, 2007 9:44 pm

uff man eres un crack para esto.....gracias por responder
magnate
Novato
Novato
 
Mensajes: 14
Registrado: Lun Jun 18, 2007 12:14 am


    

Volver a C++ Builder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados