dígitos separados de un número largo en C ++
-
30-09-2019 - |
Pregunta
Tengo, por ejemplo, el largo número 12345678901 y quiero conseguir por separado cada dígito para usarlo. He intentado muy duro pero no lo hacen hasta ahora? Algunas ideas?
pero tengo un problema en todas ellas cuando trato de los que tienen un número de 11 dígitos y más (que lo que yo quiero) mi programa deja de funcionar Estoy corriendo mi programa en Visual Studio en otros números de casos de menor - es muy bien .. alguna relación con el hecho de que mi número es largo?
Solución
Esto le dará dígitos en b
variable.
long a = 12345678901;
while(a > 0) {
long b = a % 10;
a /= 10;
}
Otros consejos
std::vector<int> digits;
while(number > 0)
{
digits.push_back(number%10); //push the last digit in
number /= 10; //truncate the digit
}
std::reverse(digits.begin(), digits.end()); // the digits were in reverse order
Una forma sería convertir el número en una cadena (no estoy seguro lo que el método es para eso, pero sé que estas cosas existen) y luego acceder a cada carácter de la cadena a la vez.
long residual= number;
int base= 10;
do
{
long digit= residual%base;
std::cout << digit << '\n';
residual/= base;
} while (residual!=0);
En lugar de calcular los dígitos, se puede obtener lo que desea, convirtiéndola en una cadena:
// This converts the binary representation of the long into a string.
std::stringstream ss;
ss << long_number;
std::string number_as_string = ss.str();
// Then visit all the characters of the string.
for (std::string::const_iterator it = number_as_string.begin();
it != number_as_string.end();
++it)
{
std::cout << *it << std::endl;
}
Esto imprimirá los números, por ejemplo, si usted tiene 12345:
1
2
3
4
5
Así se puede procesar cada uno de ellos el acceso a la *it
iterador como el código de seguridad.