Fecha y hora actual: Sab 19 May, 2012 20:38 pm
Índice del Foro

Foros de programación informática, diseño gráfico y Web

En esta comunidad intentaremos dar soporte de programación a todos los niveles, desde principiantes a profesionales de la informática, desarrollo de programas, programación web y mucho más.

¿COMO ASIGNAR UN ENTERO A UNA CADENA?

Responder al Tema

Índice del Foro > C, C#, Visual C++ > ¿COMO ASIGNAR UN ENTERO A UNA CADENA?

Autor Mensaje
mcmakia.696
Usuario Iniciado


Registrado: 04 Jun 2011
Mensajes: 15

Mensaje Publicado: Lun 23 Ene, 2012 20:45 pm

Título del mensaje: ¿COMO ASIGNAR UN ENTERO A UNA CADENA?

Responder citando

HOLA,LO QUE PASA ES QUE QUIERO ASIGNARLE UN "INT" A UN "CHAR",PARA LUEGO MOSTRAR EL "CHAR" POR LA PANTALLA.CON QUE OBJETIVO,CON EL OBJETIVO DE QUE CUANDO EL VALOR DE LA VARIBLE "INT" VARIE,ENTONCES TAMBIEN LO HAGA EL "CHAR" QUE SE ESTA MOSTRANDO EN LA PANTALLA.ALGUIEN SABE COMO HACERLO?.

*NOTA: ES PARA UN PROGRAMA HECHO CON LA LIBRERIA GRAFICA SDL.

Volver arriba
Ver perfil del usuario Enviar mensaje privado
eduar2083
Usuario Activo


Registrado: 14 Nov 2008
Mensajes: 195
Ubicación: Lima - Perú

Mensaje Publicado: Lun 23 Ene, 2012 21:12 pm

Título del mensaje: Re: ¿COMO ASIGNAR UN ENTERO A UNA CADENA?

Responder citando

Hola. Antes que todo, recuerda que debes escribir en letras minúsculas, de lo contrario significa que estás gritando.
Respecto a tu problema, si estás trabajando con C/C++, recuerda que un char tiene tamaño de 1 byte, en el que puedes almacenar caracteres del conjunto ASCII o enteros en el rango [-128, 127]. Asignarle un valor que esté fuera de dicho rango provocará un error lógico en tiempo de ejecución. Ahora bien, si estás trabajando en modo gráfico probablemente debas realizar un refrescado a tu GUI para visualizar los cambios.

Un saludo.

Volver arriba
Ver perfil del usuario Enviar mensaje privado
Manuel González
Usuario Activo


Registrado: 05 Jun 2011
Mensajes: 210
Ubicación: Venezuela-Miranda

Mensaje Publicado: Lun 23 Ene, 2012 22:32 pm

Título del mensaje: Re: ¿COMO ASIGNAR UN ENTERO A UNA CADENA?

Responder citando

saludos mackia.!

aun sigo sin ententer para que lo quieres hacer.

supondre q lo que quieres hacer es mostrar en pantalla un puntaje,vidas... en general:variables almacenadas en un int que como para imprimir texto con SDL_ttf solo lo puedes hacer con un string, necesitas comvertirla.

la solucion es trivial solo comviertes el int con sprintf.

ejemplo:

int vidas;
char texto[50];// no hace falta tanto
vidas=3;

sprintf("vidas:%d",vidas);

y listo lo demas corre por tu cuenta.!!


“pero si estudias computación deberías saber usar todos los programas”
conclusion:Usuario no es gente.

http://baulprogramas.blogspot.com
Volver arriba
Ver perfil del usuario Enviar mensaje privado Enviar correo
mr.xkr



Registrado: 18 Ene 2012
Mensajes: 5

Mensaje Publicado: Lun 23 Ene, 2012 22:45 pm

Título del mensaje: Re: ¿COMO ASIGNAR UN ENTERO A UNA CADENA?

Responder citando

Tambien puedes usar itoa, aunque mejor usar el sistema de sprintf.

En C++ concretamente también puedes hacer string(int numero), este es el método preferido por muchos.

cplusplus.com/reference/clibrary/cstdlib/itoa/

Por dios, esto de no poder publicar URLs es un desatino. Deberían bloquearse los 3 primeros mensajes xD

Saludos!

Volver arriba
Ver perfil del usuario Enviar mensaje privado
mcmakia.696
Usuario Iniciado


Registrado: 04 Jun 2011
Mensajes: 15

Mensaje Publicado: Mar 24 Ene, 2012 04:17 am

Título del mensaje: Re: ¿COMO ASIGNAR UN ENTERO A UNA CADENA?

Responder citando

EH BUENO, CREO QUE LA CUESTION ESTA EN CONVERTIR LA VARIABLE PERO NO SE COMO HACERLO JEJEJE,AQUI LES DEJO EL CODIGO PARA QUE ENTIENDAN UN POCO MAS:

Código:



#include <SDL.h>
#include <SDL_image.h>
#include <SDL_ttf.h>
#include <string>
#include <iostream.h>
#include <stdio.h>

const FPS = 20; /*TODAVIA NO SERA UTILIZADA*/

SDL_Surface *PANTALLA = NULL;
SDL_Surface *OJAG = NULL;
SDL_Surface *TEXTO = NULL;
SDL_Rect MURO;
SDL_Rect RECTA_OJAG;
SDL_Rect RECTA_TXT;
SDL_Event EVENTO;
TTF_Font *FUENTE = NULL;
SDL_Color COLORTXT = { 253, 171, 2 };

char var1[];

int VELX, VELY;
bool FIN = false;

/*******************************************/

bool COLISION( SDL_Rect A, SDL_Rect B )
{
    //LOS LADOS DE LOS RECTANGULOS
    int leftA, leftB;
    int rightA, rightB;
    int topA, topB;
    int bottomA, bottomB;

    //CALCULAR LOS LADOS DE LA RECTA A
    leftA = A.x;
    rightA = A.x + A.w;
    topA = A.y;
    bottomA = A.y + A.h;

    //CALCULAR LOS LADOS DE LA RECTA B
    leftB = B.x;
    rightB = B.x + B.w;
    topB = B.y;
    bottomB = B.y + B.h;

    //SI ALGUNO DE LOS LADOS DESDE A ESTAN FUERA DE B
    if( bottomA <= topB ){ return false; }

   if( topA >= bottomB ){ return false; }

    if( rightA <= leftB ){ return false; }

    if( leftA >= rightB ){ return false; }

    //SI NINGUNO DE LOS LADOS DESDE A ESTAN FUERA DE B
    return true;
}

/***************************************/

int main( int argc, char* args[] ){

   SDL_Init(SDL_INIT_EVERYTHING);
   TTF_Init();
   PANTALLA = SDL_SetVideoMode(800,600,24,SDL_SWSURFACE);
   OJAG = SDL_LoadBMP("img_1.bmp");
   FUENTE = TTF_OpenFont( "lazy.ttf", 40 );
   TEXTO = TTF_RenderText_Solid( FUENTE, "Oscar J Acosta G", COLORTXT );

   RECTA_OJAG.x = 0;
   RECTA_OJAG.y = 0;
   RECTA_OJAG.w = OJAG->w;
   RECTA_OJAG.h = OJAG->h;

   RECTA_TXT.x = 10;
   RECTA_TXT.y = 10;
   RECTA_TXT.w = TEXTO->w;
   RECTA_TXT.h = TEXTO->h;

   MURO.x = 250;
   MURO.y = 500;
   MURO.w = 400;
   MURO.h = 30;

   while( FIN == false )
    {
        //FPS.start();

        while( SDL_PollEvent( &EVENTO ) )
        {
         
         if( EVENTO.type == SDL_QUIT ){ FIN = true; }

         if( EVENTO.type == SDL_KEYDOWN )
         {
            switch( EVENTO.key.keysym.sym )
        {
            case SDLK_UP: VELY -= 5; break;
            case SDLK_DOWN: VELY += 5; break;
            case SDLK_LEFT: VELX -= 5; break;
            case SDLK_RIGHT: VELX += 5; break;
         
        }
         
         }

         else if( EVENTO.type == SDL_KEYUP )
         {
       
            switch( EVENTO.key.keysym.sym )
        {
            case SDLK_UP: VELY += 5; break;
            case SDLK_DOWN: VELY -= 5; break;
            case SDLK_LEFT: VELX += 5; break;
            case SDLK_RIGHT: VELX -= 5; break;
        }
         }

         if(EVENTO.key.keysym.sym == SDLK_ESCAPE){ FIN =1; }
         
       
      }

      RECTA_OJAG.x+= VELX;
      RECTA_OJAG.y+= VELY;

        if(RECTA_OJAG.x<=0)RECTA_OJAG.x=0;
      if(RECTA_OJAG.x>=800)RECTA_OJAG.x=800;
      if(RECTA_OJAG.y<=0)RECTA_OJAG.y=0;
      if(RECTA_OJAG.y>=600)RECTA_OJAG.y=600;

      if( COLISION( RECTA_OJAG,MURO) ){ RECTA_OJAG.x -= VELX; }
      if( COLISION( RECTA_OJAG,MURO) ){ RECTA_OJAG.y -= VELY; }

      SDL_FillRect( PANTALLA, &PANTALLA->clip_rect, SDL_MapRGB( PANTALLA->format, 0xFF, 0xFF, 0xFF ) );
      SDL_FillRect( PANTALLA, &MURO, SDL_MapRGB( PANTALLA->format, 0x77, 0x77, 0x77 ) );
      SDL_BlitSurface(OJAG, NULL, PANTALLA, &RECTA_OJAG);
      SDL_BlitSurface(TEXTO, NULL, PANTALLA, &RECTA_TXT);
      SDL_Flip( PANTALLA );

 
       
    }

   SDL_FreeSurface(TEXTO);
   SDL_FreeSurface(OJAG);
   TTF_CloseFont( FUENTE );
   TTF_Quit();
   SDL_Quit();

    return 0;
}



Volver arriba
Ver perfil del usuario Enviar mensaje privado
WhiteSkull
Moderador Global


Registrado: 20 Mar 2009
Mensajes: 2084
Ubicación: y*width+x

Mensaje Publicado: Mie 25 Ene, 2012 00:28 am

Título del mensaje: Re: ¿COMO ASIGNAR UN ENTERO A UNA CADENA?

Responder citando

No queda claro para que quieres la conversión, no donde vas a usarlo. El único char visible en el código es el var1, y el código no muestra gran cosa.


http://www.youtube.com/watch?v=-lT1zCukNQY
Volver arriba
Ver perfil del usuario Enviar mensaje privado Visitar sitio web del autor
mcmakia.696
Usuario Iniciado


Registrado: 04 Jun 2011
Mensajes: 15

Mensaje Publicado: Mie 25 Ene, 2012 02:49 am

Título del mensaje: Re: ¿COMO ASIGNAR UN ENTERO A UNA CADENA?

Responder citando

EN EL PROGRAMA SE MUESTRA UN RECTANGULO QUE SE MUEVE A TODAS LAS DIRRECIONES,Y COLISIONA CON UN RECTANGULO GRIS.LO QUE YO QUIERO HACER ES MOSTRAR EN PANTALLA LAS VERIABLES (x,y) DEL RECTANGULO PARA ASI SABER SU POSICION EXACTA.ENTONCES QUIERO MOSTRAR LAS VARIABLES EN LA PANTALLA CON ESTA INSTRUCCION PERO CUANDO LO INTENTO EL COMPILADOR ME DICE QUE NO PUEDO IMPRIMIR LA VARIABLE.ENTOCES COMO LO HAGO?

TEXTO = TTF_RenderText_Solid( FUENTE, "Oscar J Acosta G", COLORTXT );

Volver arriba
Ver perfil del usuario Enviar mensaje privado
Manuel González
Usuario Activo


Registrado: 05 Jun 2011
Mensajes: 210
Ubicación: Venezuela-Miranda

Mensaje Publicado: Mie 25 Ene, 2012 18:46 pm

Título del mensaje: Re: ¿COMO ASIGNAR UN ENTERO A UNA CADENA?

Responder citando

jo. eso ya se te fue explicado. te aconsejo que prestes mas atencion a los comentarios q ponemos. especialmente a tu tutorial de programacion.


“pero si estudias computación deberías saber usar todos los programas”
conclusion:Usuario no es gente.

http://baulprogramas.blogspot.com
Volver arriba
Ver perfil del usuario Enviar mensaje privado Enviar correo
WhiteSkull
Moderador Global


Registrado: 20 Mar 2009
Mensajes: 2084
Ubicación: y*width+x

Mensaje Publicado: Jue 26 Ene, 2012 00:48 am

Título del mensaje: Re: ¿COMO ASIGNAR UN ENTERO A UNA CADENA?

Responder citando

Vale, ahora si entiendo tu problema, el caso es que trabajamos con C, y la función toma solamente una cadena char.... vemoas mmmmm ah!

Primero creamos una cadena con tamaño similar al número de dígitos del número a mostrar. Por ejemplo para valores que no superen 3 cifras, definimos un array char de longitud 3 o 4 por si acaso.

Código:
int puntuacionVida=256;
char numero[4];
...


ok, Luego pasamos el número a la cadena con la fantástica función de C , sprintf(), que nos permite entre cosas darle formato a una cadena, con el fin de que nos quede más bonita, pero el caso es que la usaremos para eso, para pasar un número a una cadena.

Código:
sprintf(numero,"%s",puntuacionVida);
...

ok una vez que ya disponemos de la cadena, a lo mejor nos gustaría que se imprimiera junto con otros valores o con un texto acompañado. Entonces lo recomendable sería que no trabajaras directamente con el texto en la misma función, si no que usaras una cadena definida en una variable que sirviera para poner lo que quisiéramos y que luego se pasaría a la función.

Por ejemplo:

Código:
char marcado[80];

//Asignamos texto al marcador....
strcpy(marcador,"vida:");

//concatenamos la puntuacion de la vida
strcat(marcador, numero);

//concatenamos más texto informativo
strcat(marcador," puntos:");

// Pasamos los puntos a la cadena de numeros, por aquello de reciclar variables
sprintf(numero,"%s",puntos); // puntos = 1000

// volvemos a concatenar...
strcat(marcador,numero);
...
...


ahora "marcador" debería ser igual a "vida:256 puntos:1000", así solamente tendrías que pasarla a la función que imprime el texto.
Espero que hayas entendido el procedimiento.

Código:

TEXTO = TTF_RenderText_Solid( FUENTE, marcador, COLORTXT );
...

Suerte Ok


http://www.youtube.com/watch?v=-lT1zCukNQY
Volver arriba
Ver perfil del usuario Enviar mensaje privado Visitar sitio web del autor
Responder al Tema
Mostrar mensajes anteriores:   
Ir a:  
Todas las horas están en GMT + 2 Horas

Temas relacionados

Tema Autor Foros Respuestas Publicado
El foro no contiene ningún mensaje nuevo

Asignar puerto fuente en Winsock

VladisMSX1 C, C#, Visual C++ 1 Vie 27 Abr, 2012 10:38 am Ver último mensaje
El foro no contiene ningún mensaje nuevo

¿Como cambio la imagen de perfíl?

dezagus Dudas, criticas constructivas o sugerencias 1 Sab 14 Abr, 2012 20:36 pm Ver último mensaje
El foro no contiene ningún mensaje nuevo

¿Cómo crear varias páginas con un archivo?

Anton Voychuk PHP 2 Mie 21 Mar, 2012 18:38 pm Ver último mensaje
El foro no contiene ningún mensaje nuevo

¿Como puedo EXORar una serie de cadenas de dato...

neXo01 Python 9 Vie 09 Mar, 2012 07:13 am Ver último mensaje
El foro no contiene ningún mensaje nuevo

Radio button ¿Como cambiar su estilo por imagen?

Druida HTML y CSS 3 Jue 08 Mar, 2012 15:19 pm Ver último mensaje
Panel de Control
No puede crear mensajes, No puede responder temas, No puede editar sus mensajes, No puede borrar sus mensajes, No puede votar en encuestas,