Page 1 sur 3

Java code

Posté : mar. oct. 24, 2017 9:14 pm
par [Matthieu]
Encore moi,

j'aimerais receuillir, si possible, des pistes permettant d'afficher le nombre de chiffre distints d'un entier (exemple dans 14 on en a 2)

Comment pourrais je écrire le code correspondant ?

Re: Java code

Posté : mar. oct. 24, 2017 9:42 pm
par Lily1998
En Java je sais pas mais en Python on peut afficher len(str (nombre)), ou bien faire un programme à base de divisions par 10 il me semble.

Re: Java code

Posté : mar. oct. 24, 2017 9:59 pm
par [Matthieu]
oui avant on me demandait de calculer le nombre d'éléments dans un entier, j'ai alors utilisé le log en base 10 mais je sais pas si c'est utile pour le deuxième

Re: Java code

Posté : mar. oct. 24, 2017 10:12 pm
par Errys
En java tu peux facilement convertir un entier en chaîne de caractères avec: Integer.toString(number)

Ensuite, la meilleure méthode qui me vient à l'esprit serait d'utiliser un tableau de booléen avec une case par chiffre.

Comme ça, pour chaque chiffre de ta chaîne de caractères, si la case correspondante au chiffre est "vrai" tu fais rien, sinon, (si elle est fausse), tu la passes à "vrai" et tu incrémentes le nombre de chiffre unique par 1.

EDIT: si tu veux de l'aide pour le coder hésite pas.

Re: Java code

Posté : mar. oct. 24, 2017 10:19 pm
par [Matthieu]
ah oui je vois,
donc 1 er etape on crée la fonction booléan

puis le tableau avec les valeurs donc on aura un new vu que la taille est infinie

on rentre l'itération avec un for où on met l'intégration et la comparaison entre les deux caractères avec un if

ais je raison ?

Désolé pour le style décousu de mon message

Re: Java code

Posté : mar. oct. 24, 2017 10:20 pm
par [Matthieu]
bon je rectifie, je ne pense pas que ce soit cette méthode que le prof veuille que j'utilise, dans le squelette il y a une fonction qui prend des entiers en paramètre

Re: Java code

Posté : mar. oct. 24, 2017 10:20 pm
par Errys
Pour l'utilisation du logarithme en base 10 pour trouver le nombre de chiffre d'un entier, je trouve l'intérêt limité d'un point de vu apprentissage.

Je pense que en te demandant de faire ça, on voulait plutôt t'introduire à la notion de division successive par 10 et le fait que en Java, les divisions sont entières quand tu traites avec des int. Surtout si c'est un devoir...

Après, mon avis vaut ce qu'il vaut, je suis un simple lycéen ^^

Re: Java code

Posté : mar. oct. 24, 2017 10:22 pm
par [Matthieu]
c'est une préparation pour le tp de demain que je regarde avant mais je suis d'accord avec toi sinon

Re: Java code

Posté : mar. oct. 24, 2017 10:22 pm
par Errys
Non ce n'est pas ce que je voulais dire.

1- tu convertis ton entier en une chaine de caractère
2- tu initialise un tableau de bool de taille 10 (1 case par chiffre existant donc)
3- pour chaque chiffre de ton nombre, tu vérifies si tu l'as déjà vu grace au tableau de booleen et si tu l'as pas encore vu, tu augmentes de 1 le nombre de chiffre distincts.

Tu peux aussi le faire sans conversion en string avec des divisions successives...

Re: Java code

Posté : mar. oct. 24, 2017 10:39 pm
par [Matthieu]
ok j'ai fait le tableau de bool maintenant il faut que je fasse la 3 eme etape, la plus compliquée.
Vu qu'au final on parle de n entier, comment je sépare chaque chiffre de mon nombre pour voir si ils sont les mêmes ou pas ?

Re: Java code

Posté : mer. oct. 25, 2017 9:31 am
par fakbill
C'est le genre de questions douteuses.
Trouver le nombre de chiffres d'un entire...c'est soit le caster en chaine et c'est une question de java pure ou alors c'est écrire un algo avec des entiers (enfin algo est un grand mot...log10 est autorisé? si on se dit que "non" alors ça deviant ridicule et on en vient à faire des /10 en boucle...)

bref, la question est idiote.
Soit on pose une question de langage pure demandant comment on caste un int en chaine, soit on demande du pseudo code sur des entiers.

Re: Java code

Posté : mer. oct. 25, 2017 11:11 am
par [Matthieu]
On avait même pas le droit au log et on doit le faire avec un tableau d'entiers de 1 à 10 et des modulo.

Re: Java code

Posté : mer. oct. 25, 2017 11:14 am
par [Matthieu]
Le tableau de bool était la solution mais j'ai pas le droit de changer en chaîne de caractere

Re: Java code

Posté : mer. oct. 25, 2017 6:38 pm
par Errys
Bonjour, dans ce cas là, des divisions successives par 10 suffiraient amplement pour cela :)

Re: Java code

Posté : jeu. oct. 26, 2017 12:44 pm
par fakbill
en ayant bien conscience que c'est un exo *idiot* et qu'on ne fait **jamais** ça en pratique.