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 :

Compter le nombre de lettres différentes dans un mot


Sujet :

avec Java

  1. #21
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Avril 2017
    Messages : 15
    Par défaut
    Le soucis c'est que J'ai toujours une lettre en trop.



    Welcome to DrJava. Working directory is /Users/papa/Desktop/lemotausort
    > run AuSort
    Mot saisi: [C, O, N, T, I, N, U, E, , , , , , ]
    Il y a 8 lettre(s) différente(s) dans le mot CONTINUE
    >

  2. #22
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Chm412 Voir le message
    Le soucis c'est que J'ai toujours une lettre en trop.
    Normal, rien a été changé au code à part un affichage...

    Citation Envoyé par Chm412 Voir le message
    Mot saisi: [C, O, N, T, I, N, U, E, , , , , , ]
    Et dans cet affichage, on voit les différentes lettres du mot, et on voit qu'il y a des espaces à la fin du mot !!! Comme on traite les espaces, forcément, ils comptent pour une lettre de plus.

    Je rappelle que j'ai écrit :
    Citation Envoyé par joel.drigo Voir le message
    Pour [ne pas compter les espaces] il suffit d'exclure le traitement de l'espace quand on parcourt les lettres du mot. Ou autrement dit, de ne traiter que les caractères qui ne sont pas une espace.
    Comment fait-on pour ne pas compter les espaces ? Et bien, on fait le comptage des lettres si c n'est pas une espace. Donc if ( c!=' ' ) {.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    public class AuSort{
      public static void main(String[] args){
        for (int num=0; num<1; num=num+1){
          char[] unmot = MOOC.motAuSort();
          char[] lettres = new char[unmot.length]; // un tableau pour stocker les lettres qu'on rencontre dans le mot
          int nb=0; // au début on a stocké 0 lettre dans le tableau
          for (int numlet=0; numlet<unmot.length; numlet=numlet+1) {
              char c=unmot[numlet]; // la lettre à la position numlet 
              if ( c!=' ' ) { // on ne compte pas les espaces
                  // on cherche si c est dans lettre
                  boolean lettretrouvee=false; // au début on ne l'a pas trouvé, forcément, puisqu'on ne la pas encore cherchée
                  for(int i=0; i<nb; i++) {
                      if ( lettres[i]==c ) {
                         // la lettre est déjà présente, puisqu'on en trouve une égale dans le tableau
                         lettretrouvee = true; // on stocke le fait qu'on l'a trouvée
                         break; // ça, ça n'est pas indispensable, mais comme on a trouvé la lettre, pas la peine de continue à chercher, on peut s'arrêter donc ici.
                      }
                 }
                 // si la lettre n'est pas dans le tableau lettres, on la met dans le prochain emplacement libre, et on passe à l'emplacement libre suivant
                 if ( !lettretrouvee ) {
                    lettres[nb]=c; // on la met dans le prochain emplacement libre
                    nb=nb+1; // on passe à l'emplacement libre suivant
                 }
              }
          }
          // a la fin, le nombre de lettres stockées dans le tableau lettres est le nombre de lettres différentes du mot
           System.out.println("Il y a "+nb +" lettre(s) différente(s) dans le mot "+new String(unmot));
        }
      }
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #23
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Avril 2017
    Messages : 15
    Par défaut
    Je réussi à faire fonctionné de temps en temps le programme, et comme ultime vérification je l’ai passé au vérificateur du MOOC et voici le message qu’il me met.

    Correcteur automatique de l'exercice (Ressource externe)

    Echec
    Erreur: Nombre de lettre incorrect: peut-être l'espace considéré compté comme une lettre Erreur: nombre de lettres incorrect au test 1 expected:<8> but was:<9>



    Programme modifié. ( j'ai mis import java.util.Arrays;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    import java.util.Arrays;                               
    public class AuSort{
      public static void main(String[] args){
        for (int num=0; num<1; num=num+1){
          char[] unmot = MOOC.motAuSort();
          char[] lettres = new char[unmot.length]; // un tableau pour stocker les lettres qu'on rencontre dans le mot
          int nb=0; // au début on a stocké 0 lettre dans le tableau
          for (int numlet=0; numlet<unmot.length; numlet=numlet+1) {
              char c=unmot[numlet]; // la lettre à la position numlet 
              // on cherche si c est dans lettre
              boolean lettretrouvee=false; // au début on ne l'a pas trouvé, forcément, puisqu'on ne la pas encore cherchée
              for(int i=0; i<nb; i=i+1) {
                   if ( lettres[i]==c ) {
                      // la lettre est déjà présente, puisqu'on en trouve une égale dans le tableau
                      lettretrouvee = true; // on stocke le fait qu'on l'a trouvée
                      break; // ça, ça n'est pas indispensable, mais comme on a trouvé la lettre, pas la peine de continue à chercher, on peut s'arrêter donc ici.
                   }
              }
              // si la lettre n'est pas dans le tableau lettres, on la met dans le prochain emplacement libre, et on passe à l'emplacement libre suivant
              if ( !lettretrouvee ) {
                   lettres[nb]=c; // on la met dans le prochain emplacement libre
                   nb=nb+1; // on passe à l'emplacement libre suivant
              }
          }
          // a la fin, le nombre de lettres stockées dans le tableau lettres est le nombre de lettres différentes du mot
                   System.out.println("Il y a " + nb + " lettres différentes dans le mot "+new String(unmot)+".");
        }
      }
    }
    Fichiers attachés Fichiers attachés

  4. #24
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Avril 2017
    Messages : 15
    Par défaut
    Super

    Merci beaucoup pour votre précieuse aide et votre patience, qui m'ont permis de mieux comprendre les erreurs de mon programme et de valider cet exercice.

    Je vous remercie de tout coeur et vous souhaite une bonne continuation.

    Christian


  5. #25
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Chm412 Voir le message
    Programme modifié. ( j'ai mis import java.util.Arrays;
    Inutile. C'était juste pour pouvoir faire System.out.println("Mot saisi: "+Arrays.toString(unmot)); pour savoir quelles lettres il y avait dans le mot. Ce n'est pas la peine de laisser ça, donc l'import non plus.


    Citation Envoyé par Chm412 Voir le message
    Echec
    Erreur: Nombre de lettre incorrect: peut-être l'espace considéré compté comme une lettre Erreur: nombre de lettres incorrect au test 1 expected:<8> but was:<9>
    Il doit y avoir un autre caractère à ne pas compter, ou un autre truc, mais comme je ne peux pas deviner les mots générés par ton truc et les caractères qu'il y a dans ces mots, qu'est-ce que tu veux que je te réponde ? A part que tu peux toi-même regarder les caractères qui sont comptés en trop et modifier le code pour que ça ne les compte pas. Après tout, tu as tout ce qu'il te faut maintenant pour le faire tout seul.
    [edit] bah, maintenant tu dis que ça fonctionne... dionc c'est bone alors.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [XL-2010] Compter le nombre de noms différents dans une colonne
    Par mcog2 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 02/12/2015, 09h34
  2. [XL-2007] Compter le nombre de valeurs différente dans une colonne
    Par Mist-e-Fire dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 30/04/2013, 10h01
  3. Réponses: 1
    Dernier message: 22/05/2012, 20h15
  4. Réponses: 28
    Dernier message: 11/10/2006, 23h36
  5. Réponses: 2
    Dernier message: 28/04/2006, 14h28

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