Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: deschattenmann en 3 Julio 2010, 07:39 am



Título: Ayuda por favor con manejo de cadenas de caracteres y numéricas
Publicado por: deschattenmann en 3 Julio 2010, 07:39 am
hola bueno lo que quiero hacer es que el usuario ingrese: hola y yo obtenga 10411110897 (código ascii de hola) y pueda sumar restar multiplicar números a esa cadena. Me trabo mucho por que el usuario ingresa texto y yo quiero convertir ese texto a un numero gracias por la ayuda :D


Título: Re: Ayuda por favor con manejo de cadenas de caracteres y numéricas
Publicado por: nicolas_cof en 3 Julio 2010, 07:41 am
deschattenmann, te recomendaria leer las Reglas del subforo (https://foro.elhacker.net/programacion_cc/reglas_del_subforo-t251603.0.html)

Si pones algo del avance que llevas hecho seria mas facil para nosotros poder ayudarte.

Salu10.


Título: Re: Ayuda por favor con manejo de cadenas de caracteres y numéricas
Publicado por: deschattenmann en 3 Julio 2010, 07:59 am
Pues no llevo mucho la verdad pero bueno esto es lo que tengo:

Código:
#include <stdio.h>

main()
{
char cad[] = "hola";
int i = 0;

while (cad[i] != '/0')
{
       printf("%d", cad[i]);
       i++;
}
}

esto me imprime la cadena que quiero, pero si intento algo como:

Código:
x = cad + 10;

Ya no funciona la cosa...


Título: Re: Ayuda por favor con manejo de cadenas de caracteres y numéricas
Publicado por: nicolas_cof en 3 Julio 2010, 08:05 am
deschattenmann, usa el boton modificar para no hacer doble post

En cuanto el codigo, te sugiero que te pases por este post por algunas cuestiones

http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html

Tendrias que hacer lo siguiente...

Código:
x = cad[i] + 10;

Salu10.



Título: Re: Ayuda por favor con manejo de cadenas de caracteres y numéricas
Publicado por: deschattenmann en 3 Julio 2010, 08:40 am
Creo que no me di a entender bien :S por ejemplo cuando quier sumar 10 es a 10411110897 ósea 10411110897 + 10, quiero sumar 10 a TODA la cadena no a un solo carácter


Título: Re: Ayuda por favor con manejo de cadenas de caracteres y numéricas
Publicado por: nicolas_cof en 3 Julio 2010, 11:05 am
deschattenmann, ahi te dejo un codigo que hace lo que creo que entendi que querias

Igual fijate, cualquier error que veas no dudes en postearlo

Código:
/* by nicolas_cof bajo efectos de fernet ( http://es.wikipedia.org/wiki/Fernet ) */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *itoa( int value, char *result, int base )
{
    if ( base < 2 || base > 36 )
    {
        *result = '\0';
        return result;
    }
    
    char* ptr = result, *ptr1 = result, tmp_char;
    int tmp_value;
    
    do
    {
        tmp_value = value;
        value /= base;
        *ptr++ = "zyxwvutsrqponmlkjihgfedcba9876543210123456789abcdefghijklmnopqrstuvwxyz" [35 + (tmp_value - value * base)];
    }
    while ( value );
    
    if ( tmp_value < 0 ) *ptr++ = '-';
    *ptr-- = '\0';
    while ( ptr1 < ptr )
    {
        tmp_char = *ptr;
        *ptr--= *ptr1;
        *ptr1++ = tmp_char;
    }
    
    return result;
}

int main( void )
{
    char cad[] = "hola";
    int i,
        lencad = strlen( cad );
    char *tmp[lencad];
    char *cadnum;
    unsigned long x;

    cadnum = calloc( 25, sizeof( char ) );

    for ( i = 0; i < lencad; ++i )
    {
        tmp[i] = calloc( 4, sizeof( char ) );

        tmp[i] = itoa( cad[i], tmp[i], 10 );

        cadnum = strncat( cadnum, tmp[i], strlen( tmp[i] ) );
    }

    x = atol( cadnum );

    printf( "cadnum:%s | x:%ld | x + 10:%ld \n", cadnum, x, x + 10 );
    
    for ( i = 0; i < lencad; ++i )
        free( tmp[i] );
    free( cadnum );

    return 0;
}

http://www.strudel.org.uk/itoa/

Otra version usando la funcion sprintf() :P

Código:
/* by nicolas_cof bajo efectos de fernet ( http://es.wikipedia.org/wiki/Fernet ) */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main( void )
{
    char cad[] = "hola";
    int i,
        lencad = strlen( cad );
    char *tmp[lencad];
    char *cadnum;
    unsigned long x;

    cadnum = calloc( 25, sizeof( char ) );

    for ( i = 0; i < lencad; ++i )
    {
        tmp[i] = calloc( 4, sizeof( char ) );

        sprintf( tmp[i], "%d", cad[i] );

        cadnum = strncat( cadnum, tmp[i], strlen( tmp[i] ) );
    }

    x = atol( cadnum );

    printf( "cadnum:%s | x:%ld | x + 10:%ld \n", cadnum, x, x + 10 );
    
    for ( i = 0; i < lencad; ++i )
        free( tmp[i] );
    free( cadnum );

    return 0;
}

Salu10.


Título: Re: Ayuda por favor con manejo de cadenas de caracteres y numéricas
Publicado por: deschattenmann en 5 Julio 2010, 18:10 pm
Sii eso era lo que quería hacer, pensé que seria mas fácil pero pues a entender el código se ha dicho... Muchas gracias nicolas_cof


Título: Re: Ayuda por favor con manejo de cadenas de caracteres y numéricas
Publicado por: nicolas_cof en 5 Julio 2010, 20:20 pm
deschattenmann, de nada! para eso estamos compañero ;)

Salu10.