Busqué sobre esto pero no encontré una respuesta clara para este problema en lenguaje C
Imagina que tengo un int a = 123
y otro int b = 456
.
¿Cómo los combino para obtener la combine(a, b) == 123456
?
Puede multiplicar a
por 10 a la potencia de N, donde N es el número de dígitos en b
, luego sume ese número a b
.
Menos eficientemente, puede convertir ambas cadenas, concatenarlas y luego analizar esa cadena en un entero.
En cualquier caso, existe la posibilidad de desbordamiento de enteros.
Si se permite que b
sea negativo, tendrá que definir mejor el resultado deseado.
Primero encuentre el número de dígitos en “b” Esto se puede hacer de la siguiente manera:
int find_num_digits(int b) { int i = 0; while (b > 0) { b = b/10; i++; } return i; }
Luego haz: c = a * 10 ^ find_num_digits (b) + b;
“c” es el resultado. Deberá asegurarse de que “c” no salga de los límites.
int combine(int a, int b) { return 1000*a + b; }
Más genéricamente:
int combine(int a, int b) { if (b==0) return a; return combine(a, b/10)*10+ b%10; }