IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Débutante JAVA, aide pour un exercice.


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 17
    Par défaut Débutante JAVA, aide pour un exercice.
    Bonjour,

    J'ai réalisé un exercice dont le but est de compter le nombre de lettres différentes dans un mot. Je joins l'énoncé ci-dessous. Mon problème est que le programme fonctionne mais je ne comprend pas pourquoi mon programme ne compte pas correctement le nombre de lettres.
    Par exemple, lorsque j'exécute mon programme, je tombe sur : " Il y a 8 lettres différentes dans le mot CONSACRER" alors que j'ai 7 lettres différentes, car j'ai une occurence des lettres C et R.
    Auriez-vous une idée ?


    ÉNONCÉ : NOMBRE DE LETTRES DIFFÉRENTES DANS UN MOT
    Le but de l'exercice est d'écrire un programme qui tire au sort un mot et affiche le nombre de lettres différentes dans ce mot. Par exemple, il y a 7 lettres différentes dans le mot PUREMENT. Ce mot comporte 8 lettres en tout, mais comme il y a deux occurrences de E, cela ne fait que 7 lettres différentes.

    Pour écrire ce programme, vous devez utiliser une méthode qui s'appelle MOOC.motAuSort() qui renvoie un mot pris au hasard dans une liste de quelques dizaines de mots de plus de 7 lettres. Cette méthode renvoie le mot dans un tableau de 14 caractères, avec des espaces dans les dernières cases si le mot choisi fait moins de 14 caractères.

    Le programme affiche simplement le nombre de lettres différentes.
    Images attachées Images attachées  

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2013
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2013
    Messages : 131
    Par défaut
    Bonjour,

    Je pense que tu as un souci au niveau de ta variable nb. J'ai l'impression que le fait de l'incrementer que lorsqu'une redondance de lettre est trouvee me parait faux.
    Dans ce cas la, tu ne pourras pas verifier dans ta boucle interne for toutes les lettres qui precedent la lettre a verifier.

    Dans le cas ou l'utilisation de structure de donnees differentes est permise, je te conseil d'utiliser par example un Set.
    En parcourant le mot, pour chaque lettre tu verifies au prealable si la lettre a deja ete insere dans ton Set. Si ce n'est pas le cas tu l'inseres si c'est le cas tu passes a la lettre suivante dans le mot.
    A la fin du parcours, soit tu verifies le nombre de lettre dans ton Set, soit tu utilises durant le parcours du mot un compteur d'insertion dans le set.

    J'espere etre claire.


    P.S : J'utilise un clavier Qwerty je n'ai pas d'accent

  3. #3
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2016
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2016
    Messages : 80
    Par défaut
    Bonjour,

    Tu tombes sur 8 lettres différentes car il prend en compte les espaces...
    avec des espaces dans les dernières cases si le mot choisi fait moins de 14 caractères
    Donc tu dois ne pas regarder les espaces, juste après ton premier for, tu dois ajouter un if(c != ' ')

    Quelque chose du genre ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for(int numlet=0;numlet<unmot.length; numlet = numlet + 1){
                char c=unmot[numlet];
                if(c!=' ') {
                 .....
                }
    Pour qu'il ne prenne pas en compte les espaces.



    Citation Envoyé par Yonito Voir le message
    Bonjour,

    Je pense que tu as un souci au niveau de ta variable nb. J'ai l'impression que le fait de l'incrementer que lorsqu'une redondance de lettre est trouvee me parait faux.
    Dans ce cas la, tu ne pourras pas verifier dans ta boucle interne for toutes les lettres qui precedent la lettre a verifier.

    C'est ce qui est fait, Toutes les lettres de unMot sont passées en revue, et si elles ne sont pas dans lettres alors elle est ajoutée et on incrémente le nb. Le nommage des variables est très incertain (voire mauvais).
    Si la lettre en cours, est dans lettres, alors on fait rien, juste on passe à la suivante.

    Citation Envoyé par Yonito Voir le message
    Dans le cas ou l'utilisation de structure de donnees differentes est permise, je te conseil d'utiliser par example un Set.
    En parcourant le mot, pour chaque lettre tu verifies au prealable si la lettre a deja ete insere dans ton Set. Si ce n'est pas le cas tu l'inseres si c'est le cas tu passes a la lettre suivante dans le mot.
    A la fin du parcours, soit tu verifies le nombre de lettre dans ton Set, soit tu utilises durant le parcours du mot un compteur d'insertion dans le set.
    Elle fait ce que tu dis, mais avec un array, qui est dans la consigne, car il y a ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for (int i = 0; i < nb; i++) {
                        if (lettres[i] == c) {
                            lettreRetrouvee = true;
                            break;
                        }
                    }
    Jérémy.

  4. #4
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 17
    Par défaut re
    Merci pour choukie12, c'est bien compris.

    Une autre question, j'ai utilisé la lettre "c" dans mon programme car on m'as dit t'introduire une lettre que le programme devra reconnaitre. Cependant je ne comprend pas comment le programme peut savoir quelles autres lettres chercher ?

  5. #5
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2016
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2016
    Messages : 80
    Par défaut
    j'ai utilisé la lettre "c" dans mon programme car on m'as dit t'introduire une lettre que le programme devra reconnaitre. Cependant je ne comprend pas comment le programme peut savoir quelles autres lettres chercher ?

    en fait ta lettre c, n'est pas la lettre 'c', c'est juste une variable.
    C'est pour ca que j'ai dit que tes variables étaient très mal nommées.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    1 - char c = '';
    2 - char c = 'c';
    Dans l'exemple ci-dessus, seuleument dans le cas 2, la variable c, est vraiment la lettre c.
    Ce qui est avant le égal est souvent, voire toujours le nom de la variable, et ce qui est à droite, la valeur qu'on lui affecte.

    Jérémy-.

  6. #6
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 17
    Par défaut re
    super, merci de ta réponse

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Besoin d'aide pour un exercice de cours (débutant)
    Par GetZo34 dans le forum Général Python
    Réponses: 8
    Dernier message: 28/09/2017, 00h31
  2. Aide pour un exercice en java
    Par CQ0sMo dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 27/12/2010, 17h55
  3. [Débutant] Un peu d'aide pour un exercice
    Par Copernicus dans le forum Prolog
    Réponses: 5
    Dernier message: 30/04/2007, 12h28
  4. [Débutant] Besoin d'aide pour un exercice
    Par bebetoalvaro dans le forum Pascal
    Réponses: 9
    Dernier message: 05/02/2007, 01h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo