Question

Je par exemple long numéro 12345678901 et je veux obtenir séparément chaque chiffre pour l'utiliser. J'ai essayé vraiment dur mais je ne l'ai pas jusqu'à présent? Toutes les idées?

mais j'ai un problème dans tous les lorsque je tente ceux qui ont un nombre de 11 chiffres et plus (ce que je veux) mon programme cesse de fonctionner Je cours mon programme en studio visuel dans d'autres numéros de cas-petits - est très bien .. aucun lien avec le fait que mon numéro est longue?

Était-ce utile?

La solution

Cela vous donnera les chiffres à b variable.

long a = 12345678901;
while(a > 0) {
   long b = a % 10;
   a /= 10;
}

Autres conseils

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

Une façon serait de convertir le nombre à une chaîne (pas sûr de ce que la méthode est pour cela, mais je sais que ces choses existent), puis accéder à chaque caractère une chaîne à la fois.

long residual= number;
int base= 10;

do
{
    long digit= residual%base;
    std::cout << digit << '\n';
    residual/= base;
} while (residual!=0);

Au lieu de calculer les chiffres, vous pouvez obtenir ce que vous voulez en le convertissant en une chaîne:

// 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;
}

Cela affichera les chiffres, par exemple, si vous avez 12 345:

1
2
3
4
5

Vous pouvez traiter chacun d'entre eux d'accéder au *it iterator que le code ci-dessus.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top