Comunidad Underground Hispana  

Retroceder   Comunidad Underground Hispana > Programacion > Carbide C/C#/C++


Respuesta Crear Nuevo Tema
 
Compartir en twitter LinkBack Herramientas Desplegado
Antiguo 02-abr-2012, 12:47   #1
Veterano
 
Avatar de sokoleonardo
 
Fecha de Ingreso: febrero-2011
Ubicación: C:\Argentina\Chaco\Fontana.py
Amigos 7
Mensajes: 657
Gracias: 128
Agradecido 122 veces en 75 mensajes.
Question [C] ¿Como hacer un int 123 a partir de int's 1,2,3...?

Lo que quiero hacer y no puedo porque soy muy bruto es hacer una especie de concatenacion.

Tengo las variables:
Código:
int numero1 = 1;
int numero2 = 2;
int numero3 = 3;
  
Y quiero hacer una variable int a partir de esas 3 variables pero quiero que sea 123... por ejemplo...

Hagamos de cuenta que tenemos 72 lo sumamos + 2 y obtenemos 722 ¿Como lo hago?

EN C...

Yo ultimamente he vuelto al colegio asi que me tengo que dedicar menos a la programacion y mas a los deberes en mi colegio asi que por motivos voy a aparecer menos.

Saludos!
__________________

sokoleonardo está desconectado   Responder Citando
Antiguo 02-abr-2012, 14:01   #2
Moderador
 
Avatar de ajr784
 
Fecha de Ingreso: marzo-2007
Amigos 5
Mensajes: 1.444
Gracias: 17
Agradecido 264 veces en 235 mensajes.
Predeterminado Respuesta: [C] ¿Como hacer un int 123 a partir de int's 1,2,3...?

Existen varias formas de resolver el problema, como siempre sucede en programación.

Una, la más sencilla y directa:
Código:
int a = 1;
int b = 2;

int c = (a * 10) + b; // los paréntesis no son necesarios ya que C respeta el orden de presedencia de los operadores matemático
  
Un error con el código anterior, es que para a = 11 y b = 23, ésto no funciona!, otra forma puede ser:
Código:
char buffer[255]; // estoy apurado...
sprintf(buffer, "%d%d", a, b);
  
Luego, en buffer tenemos la concatenación de ambos valores como un c-string. Seguramente existan otras formas de resolver el problema, esa son las que se me ocurrieron ahora.
__________________
Hay pocas frases que me identifican tanto
Cita:
Iniciado por Cuarteto de Nos
Casi nunca veo la foto
Tuya en mi celular
Sigue ahí por la pereza
Que me da apretar "borrar"
-Enamorado Tuyo-
ajr784 está desconectado   Responder Citando
Antiguo 04-abr-2012, 10:07   #3
Veterano
 
Avatar de sokoleonardo
 
Fecha de Ingreso: febrero-2011
Ubicación: C:\Argentina\Chaco\Fontana.py
Amigos 7
Mensajes: 657
Gracias: 128
Agradecido 122 veces en 75 mensajes.
Predeterminado Respuesta: [C] ¿Como hacer un int 123 a partir de int's 1,2,3...?

Cita:
Iniciado por ajr784 Ver Mensaje
Existen varias formas de resolver el problema, como siempre sucede en programación.

Una, la más sencilla y directa:
Código:
int a = 1;
int b = 2;

int c = (a * 10) + b; // los paréntesis no son necesarios ya que C respeta el orden de presedencia de los operadores matemático
  
Un error con el código anterior, es que para a = 11 y b = 23, ésto no funciona!, otra forma puede ser:
Código:
char buffer[255]; // estoy apurado...
sprintf(buffer, "%d%d", a, b);
  
Luego, en buffer tenemos la concatenación de ambos valores como un c-string. Seguramente existan otras formas de resolver el problema, esa son las que se me ocurrieron ahora.
Si, ya se me ocurria lo de multiplicacion por 10, pero necesito una funcion que modifique una variable int concatenando tambien las cifras de 2 numeros...

Bueno cree mi propia funcion en C.
Al parecer Python me ayudo a pensar, primero lo hice en Python luego lo pase a C.

Código:
#Python

def concatenatInt(n1, nconcat):
    i = 10;
    while 1:
        if i >= nconcat:
            n1 *= i;
            n1 += nconcat;
            break;
        i *= 10;
    return n1;
  
Código:
//C
#include <stdio.h>


main(){

    printf("concatenamos el numero 50 + 31123 = %d", concatenationIntegers(50,31123) );


    getchar();
    }

concatenationIntegers(integer, int_concat){
    int i = 10;
    while(i){
        if (i >= int_concat){
            integer *= i;
            integer += int_concat;
            break;
            }
        i *= 10;
        }

    return integer;
    }
  
__________________

sokoleonardo está desconectado   Responder Citando
Antiguo 04-abr-2012, 14:47   #4
Moderador
 
Avatar de ajr784
 
Fecha de Ingreso: marzo-2007
Amigos 5
Mensajes: 1.444
Gracias: 17
Agradecido 264 veces en 235 mensajes.
Predeterminado Respuesta: [C] ¿Como hacer un int 123 a partir de int's 1,2,3...?

Como solución rápida está buena. Como resolución de problema, también (tomar un lenguaje sencillo como python para plasmar la idea de forma rápida y luego implementarlo en el lenguaje concreto). Sin embargo, un par de cositas:

1º) Evita los bucles infinitos...
2º) En C, también existe el while(1)
3º) Presumo que es por escribir rápido, pero en C es necesario declarar los tipos de datos.
4º) Los tipos de datos primitivos en C/C++ (y cualquier lenguaje compilado) tienen un límite (MAX_INT_VALUE sino me equivoco), por lo que tu programa puede fallar.
5º) En python, el ; no es necesario (pero eso ya lo sabes :P )

Haciendo una observación, el código dentro del if dentro del while, se ejecuta una sóla vez y el while se utiliza únicamente para sacar la potencia de diez hacia cual elevar el primer número y luego sumarle el segundo. Con todo ésto, es más legible hacer el código:
Código:
int i = 10;
while(i < int_concat){
    i *= 10;
}

return integer * i + int_concat;
  
El código puede fallar, pero la idea creo que queda.

PD: ésto no sólo se puede escribir así en C, su contraparte en python es exactamente igual (salvando la sintaxis):
Código:
i = 10
while i < int_concat:
  i *= 10

return integer * i + int_concat
  
__________________
Hay pocas frases que me identifican tanto
Cita:
Iniciado por Cuarteto de Nos
Casi nunca veo la foto
Tuya en mi celular
Sigue ahí por la pereza
Que me da apretar "borrar"
-Enamorado Tuyo-
ajr784 está desconectado   Responder Citando
El Siguiente Usuario Agradeció a ajr784 Por Este Mensaje:
sokoleonardo (06-abr-2012)
Antiguo 11-ago-2012, 13:41   #5
Recien llegado
 
Fecha de Ingreso: agosto-2012
Amigos 0
Mensajes: 6
Gracias: 6
Agradecido 5 veces en 2 mensajes.
Predeterminado Respuesta: [C] ¿Como hacer un int 123 a partir de int's 1,2,3...?

Hola, y esto no se puede hacer con punteros? O estoy entendiendo mal el problema?

Edit: Ya entendí, y estoy probando código a ver si sale xD


Sorry.
DeveloperenC está desconectado   Responder Citando
Respuesta

Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder mensajes
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los Códigos BB están Activado
Las Caritas están Activado
[IMG] está Activado
El Código HTML está Desactivado
Trackbacks están Activado
Pingbacks están Activado
Refbacks están Activado



Temas Similares
Tema Autor Foro Respuestas Último mensaje
¿Como hacer indetectable un troyano? Jodertienes1buena Troyanos y virus 1 29-feb-2012 08:36
[Guia] Iniciando en Python Doddy Python 63 29-ago-2011 17:04
¿Como hacer Servers Minecraft y Counter Strike Online? LSYK Juegos PC Y Consolas 2 24-ago-2011 06:10



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.0