Exercice de débutante

Fermé
Perfectina Messages postés 4 Date d'inscription mercredi 3 décembre 2014 Statut Membre Dernière intervention 3 décembre 2014 - 3 déc. 2014 à 17:46
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 3 déc. 2014 à 20:38
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é..
0
Perfectina Messages postés 4 Date d'inscription mercredi 3 décembre 2014 Statut Membre Dernière intervention 3 décembre 2014
3 déc. 2014 à 18:01
J'ai demandé de l'aide...

Pas une solution toute faite qui de toutes façons ne me servirait à rien.
0
Perfectina Messages postés 4 Date d'inscription mercredi 3 décembre 2014 Statut Membre Dernière intervention 3 décembre 2014
3 déc. 2014 à 17:48
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
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
3 déc. 2014 à 19:02
Bonjour,

C'est un problème de maths ça. Regarde les logarithmes en base 10 dans la classe Math.
0
Perfectina Messages postés 4 Date d'inscription mercredi 3 décembre 2014 Statut Membre Dernière intervention 3 décembre 2014
3 déc. 2014 à 20:28
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).
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
Modifié par KX le 3/12/2014 à 20:40
" 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 ?
0