Je souhaite obtenir le nombre présent au chiffre spécifié dans un nombre. Supposons que le numéro soit "123456789" et que je doive retourner le numéro à la position 3 à partir de la gauche. Quelqu'un peut-il m'aider à le faire en C++.Recherche d'un nombre à un chiffre particulier dans un nombre
Répondre
Cela devrait retourner le troisième chiffre d'un nombre!
cout << "Enter an integer";
int number;
cin >> number;
int n = number/100 % 10
Ou (pour tous les chiffres):
int number = 12345;
int numSize = 5;
for (int i=numSize-1; i>=0; i--) {
int y = pow(10, i);
int z = number/y;
int x2 = number/(y * 10);
printf("%d-",z - x2*10);
}
Pour obtenir le chiffre à tout endroit du nombre que vous pouvez utiliser une simple conversion de chaîne:
int foo = 123456789;
int pos = 3;
// convert to string and use the [] operator
std::cout << std::to_string(foo)[pos - 1];//need to subtract 1 as C++ is 0 index based
Lorsque vous donnez un code complet pour un devoir d'étudiant, vous ne l'aidez pas vraiment, ni ce site. Surtout quand cet étudiant n'a montré aucun effort pour faire ses devoirs tout seul. – Slava
@Slava Plus que probablement, ils ne seront pas en mesure de l'utiliser de toute façon, si ce sont les devoirs comme l'exemple de travail à domicile que j'ai vu de ce type de question doit utiliser la division et modulo. – NathanOliver
@Slava Ce n'est pas mon devoir. Je suis un débutant à programmer et à essayer de résoudre les défis de base dans hackerrank. Je sais qu'il existe un moyen de résoudre cela en utilisant la division et modulo. Je cherchais juste un moyen efficace .. Merci pour votre soutien. –
L'utilisation de std :: stringstream
std::string showMSD3(int foo)
{
std::stringstream ssOut;
std::string sign;
std::stringstream ss1;
if(foo < 0) {
ss1 << (-1 * foo);
sign = '-';
}
else
ss1 << foo;
std::string s = ss1.str();
ssOut << " foo string: '"
<< sign << s << "'" << std::endl;
if(s.size() > 2)
{
ssOut << " Most Significant Digit 3: "
<< s[2] // 1st digit at offsset 0
<< "\n has hex value: 0x"
<< std::setw(2) << std::setfill('0') << std::hex
<< (s[2] - '0')
<< std::endl;
}
else
ssOut << " Err: foo has only "
<< s.size() << " digits" << std::endl;
return (ssOut.str());
}
et s omewhere plus proche principale (peut-être en principal):
// test 1
{
std::cout << showMSD3(123456789) << std::endl;
}
// test 2
{
std::cout << showMSD3(12) << std::endl;
}
// test 3 - handle negative integer
{
std::cout << showMSD3(-123) << std::endl;
}
avec sortie
foo string: '123456789'
Most Significant Digit 3: 3
has hex value: 0x03
foo string: '12'
Err: foo has only 2 digits
foo string: '-123'
Most Significant Digit 3: 3
has hex value: 0x03
est le nombre entier numéro ou une chaîne? La question est vague. –
integer @VioletGiraffe –
Je vote pour clore cette question hors-sujet parce que l'étudiant n'a montré aucun effort pour résoudre ses devoirs. – Slava