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).

0
grt.dan 3 nov. 2019 à 15:53

1 réponse

Meilleure 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;
}
1
Iman Kianrostami 3 nov. 2019 à 13:02