J'ai besoin de trouver le nombre de chiffres de chaque numéro de 1 à 40. On dirait qu'il devrait être simple d'utiliser les boucles for et while, mais je ne peux pas le faire fonctionner.
J'ai essayé de le faire avec "cin >> a;", en entrant la valeur de "a" à partir du clavier et la boucle while a parfaitement fonctionné pour n'importe quel nombre que j'ai entré, mais quand j'essaie de le faire avec une boucle for , cela ne fonctionne pas, donc le problème doit être là.
int main()
{
int a; //initially found number
int digits=0; //number of digits number "a" has
int temp; // temporary number "a"
for(a=1;a<=40;a++) // takes a number, starting from 1
{
temp=a;
while(temp!=0) //finds number of digits the number "a" has
{
temp=temp/10;
digits++;
}
cout<<digits<<endl; //prints number of digits each found number "a" has
}
return 0;
}
Ce que je devrais obtenir, c'est: 1 pour chaque numéro de 1 à 9, puis 2 pour chaque numéro de 10 à 99 et ainsi de suite. Ce que je reçois en ce moment, c'est 1 2 3 4 5 6 7 8 9 11 13 15 17 19, etc. (ne montrant que des nombres inégaux pour aller plus loin).
1 réponse
Vous ne réinitialisez pas la valeur digits
. Vous devez ajouter la ligne digits = 0
au début de chaque itération.
int main()
{
int a; //initially found number
int digits=0; //number of digits number "a" has
int temp; // temporary number "a"
for(a=1;a<=40;a++) // takes a number, starting from 1
{
digits=0;
temp=a;
while(temp!=0) //finds number of digits the number "a" has
{
temp=temp/10;
digits++;
}
cout<<digits<<endl; //prints number of digits each found number "a" has
}
return 0;
}