Exercice de débutante [Fermé]

Signaler
Messages postés
4
Date d'inscription
mercredi 3 décembre 2014
Statut
Membre
Dernière intervention
3 décembre 2014
-
Messages postés
16180
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 janvier 2021
-
Bonjour,

Je suis totalement débutante, c'est ma première année d'informatique.

Je cherche à coder une fonction qui prendrait en argument un entier n et retournerait le nombre de chiffre qu'il y a dans n.

Par exemple si n=1999, la fonction retourne 4.
Si n=300, la fonction retourne 3.

Pour commencer j'ai fait :

public static int nombreDeChiffres (int n) {
int s=0;
if (n>=0 && n<10) {
s=1;
} else if (n>=10 && n<100) {
s=2;
} else if (n>=100 && n<1000) {
s=3;
} else if (n>=1000 && n<10000) {
s=4;
}

On pourrait continuer longtemps ainsi. A mon avis il faudrait plutôt une formule générale. Et je suis bloquée... Je remarque simplement que lorsqu'on multiplie n par 10, s augmente de 1.
Ex : Si n=1...
n*10 implique s=1
n*10*10 implique s=2
n*10*10*10 implique s=3
etc

Comment pourrais-je m'y prendre ? Faut-il utiliser une boucle for ?

4 réponses

Tiens encore des devoirs à faire?

Qui s'y colle?

Anti Micr$, Google, anti Yahoo, anti "faces de ploucs", "Tuiteur", "Skailpe", Hotmail, Gmail, smarfaune, ail-faune et consorts...
Militant pour un Internet libre sans flicages! Sauvons notre liberté..
Messages postés
4
Date d'inscription
mercredi 3 décembre 2014
Statut
Membre
Dernière intervention
3 décembre 2014

J'ai demandé de l'aide...

Pas une solution toute faite qui de toutes façons ne me servirait à rien.
Messages postés
4
Date d'inscription
mercredi 3 décembre 2014
Statut
Membre
Dernière intervention
3 décembre 2014

Oups je me suis trompée.

Je voulais dire que

Si n=1... s=1
n*10 implique s=2
n*10*10 implique s=3
n*10*10*10 implique s=4
Messages postés
16180
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 janvier 2021
2 775
Bonjour,

C'est un problème de maths ça. Regarde les logarithmes en base 10 dans la classe Math.
Messages postés
4
Date d'inscription
mercredi 3 décembre 2014
Statut
Membre
Dernière intervention
3 décembre 2014

Merci !

J'ai du coup essayé de coder cette fonction, mais étant donné que je n'ai pas la possibilité de vérifier moi-même, pouvez-vous me dire si elle fonctionne et si elle répond à la fonction recherchée ?

public static int nbDeChiffre (int n) {
    int s=0; int i=1;
    while (i<=n) {
        s=s+1;
        i=i*10;
    }
    return s;
}


Lorsque j'essaye de choisir un nombre, par exemple n=9999, ça fait bien :
s=0 et i=1 (initialisation des variables)
s=1 et i=10 (on continue...)
s=2 et i=100 (...)
s=3 et i=1000 (...)
s=4 et i=10000 (ah, i devient supérieur à n).
et elle retourne donc 4.

Si on prend n=10000, s ira bien jusqu'à 5 !

Est-ce juste ?

(Je tiens juste à préciser que lorsque j'ouvre un topic, c'est dans le but de progresser, de valider mon examen en recevant de l'aide de la part de personnes qui veulent bien consacrer de leur temps (et que je remercie), et aucunement dans le but qu'on me fasse mes "devoirs", d'autant plus que ces exos ne sont pas demandés, c'est simplement moi qui me les donne pour m'entraîner et me préparer le mieux possible).
Messages postés
16180
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 janvier 2021
2 775
" je n'ai pas la possibilité de vérifier moi-même"
Comment veux tu coder quoi que ce soit si tu ne peux pas tester ?
Il existe des compilateurs en ligne (limités certes, mais pour débutant ça devrait suffire)
Exemple : https://ideone.com/

Remarque : pourquoi ne pas avoir regarder la classe Math comme je te l'indiquais ?