Home   Artículos   Recursos   Foros   
Artíclos recientes publicados en Latindevelopers:

Visual C++: NSDoubleEdit: Un control para el manejo de números decimales en Visual C++.
Visual C++: Implementando una Calculadora en Visual C++
Visual C++: CCommandLine: Una clase para el uso de la linea de comando
Visual C++: Una clase para el manejo del Registro


Como separar de una cadena solo numeros y sumarlos

Trucos y Consejos con respecto al Lenguaje C++ Builder.

Moderador: yalmar

Como separar de una cadena solo numeros y sumarlos

Notapor magnate el Lun Jun 18, 2007 12:24 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 el 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
Programador Experimentado
Programador Experimentado
 
Mensajes: 252
Registrado: Mié Jun 09, 2004 4:13 pm
Ubicación: Brasil

Re: Como separar de una cadena solo numeros y sumarlos

Notapor magnate el 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 el 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
Programador Experimentado
Programador Experimentado
 
Mensajes: 252
Registrado: Mié Jun 09, 2004 4:13 pm
Ubicación: Brasil

Re: Como separar de una cadena solo numeros y sumarlos

Notapor magnate el Mié Jun 20, 2007 9:43 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 1 invitado