Nombre de mots d'une phrase

Voir le sujet précédent Voir le sujet suivant Aller en bas

Nombre de mots d'une phrase

Message par nabiL le Sam 5 Jan - 20:52

Salut,

Un petit exercice pour ceux qui sont intéressés:

Faire une fonction en C/C++ qui retoune le nombre de mots d'un texte donné. Un mot est une suite de lettres. On suppose qu'on dispose d'une fonction qui vérifie si un caractère est une lettre ou non.
Code:

    int isLettre(char c) {
      return (c>=65&&c<=90) || c>=97&&c<=122 ||
          c=='à' || c=='é' || c=='è' || c=='ê';
    }
   
Nabil - tunis
خير الناس أنفعهم للناس

nabiL
Admin
Admin

Sexe:Masculin
Messages : 1908
Inscrit le : 19 Mar 2007
Localisation : Tunisie

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

Revenir en haut Aller en bas

Re: Nombre de mots d'une phrase

Message par manianis le Sam 5 Jan - 21:59

Cette fois je ne donnerai pas de solutions jusqu'a voir les contributions des autres.

manianis
Admin
Admin

Sexe:Masculin
Messages : 976
Inscrit le : 10 Oct 2007
Localisation : Tunisie

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

Revenir en haut Aller en bas

Re: Nombre de mots d'une phrase

Message par nabiL le Sam 5 Jan - 22:11

Bien fait Smile C'est ce que j'allais dire.
Nabil - tunis
خير الناس أنفعهم للناس

nabiL
Admin
Admin

Sexe:Masculin
Messages : 1908
Inscrit le : 19 Mar 2007
Localisation : Tunisie

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

Revenir en haut Aller en bas

Re: Nombre de mots d'une phrase

Message par informix le Dim 6 Jan - 16:09

En JAVA, j'ai une solution. On peut la traduire en C++ aisément:

Code:
    static public ArrayList<Object> allWords(String text) {
        if (text==null || text.length()==0) return null;
        ArrayList<Object> all = new ArrayList<Object>();
        String word = "";
        boolean _begin = false;
        int nbr = 0;
        for (int i=0;i<text.length();i++) {
            if (_begin && !MotAlpha.isLettre(text.charAt(i))) {
                _begin = false;
                all.add(word);
                nbr = nbr + 1;
            }
            if (!_begin && MotAlpha.isLettre(text.charAt(i))) {
                _begin = true;
                word = "";
            }
            if (_begin)
                word = word + text.charAt(i);           
        }
       
        if (_begin) {
            all.add(word);
        }
        return all;
    }


Vos commentaires?
informix, Ecole d'ingénieurs
Les passions font vivre l'Homme; sa sagesse le fait seulement durer.

informix
Membre fondamental
Membre fondamental

Messages : 350
Inscrit le : 19 Mar 2007

Feuille de personnage
Capacité linguistique:
1000/1000  (1000/1000)

Revenir en haut Aller en bas

Re: Nombre de mots d'une phrase

Message par manianis le Dim 6 Jan - 20:57

Je crois que la solution la plus simple consiste à sauter les espaces de début et de fin et de compter ensuite le nombre de séparateurs entre les mots : nbSep (tabulations, esapces, retours à la ligne, signes de ponctuation...)

Le nombre de mots doit être égal à : nbSep + 1

manianis
Admin
Admin

Sexe:Masculin
Messages : 976
Inscrit le : 10 Oct 2007
Localisation : Tunisie

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

Revenir en haut Aller en bas

Re: Nombre de mots d'une phrase

Message par manianis le Dim 6 Jan - 20:58

informix a écrit:En JAVA, j'ai une solution. On peut la traduire en C++ aisément:

Code:
    static public ArrayList allWords(String text) {
        if (text==null || text.length()==0) return null;
        ArrayList all = new ArrayList();
        String word = "";
        boolean _begin = false;
        int nbr = 0;
        for (int i=0;i
            if (_begin && !MotAlpha.isLettre(text.charAt(i))) {
                _begin = false;
                all.add(word);
                nbr = nbr + 1;
            }
            if (!_begin && MotAlpha.isLettre(text.charAt(i))) {
                _begin = true;
                word = "";
            }
            if (_begin)
                word = word + text.charAt(i);           
        }
       
        if (_begin) {
            all.add(word);
        }
        return all;
    }


Vos commentaires?


Votre solution me parait bonne. Bien que je trouve que l'utilisation des Templates n'est pas justifiée dans ce cas.

manianis
Admin
Admin

Sexe:Masculin
Messages : 976
Inscrit le : 10 Oct 2007
Localisation : Tunisie

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

Revenir en haut Aller en bas

Re: Nombre de mots d'une phrase

Message par methodiX le Dim 6 Jan - 21:30

le nombre de mots n'est pas connu d'avance. Donc, le recours aux tableaux dynamiques est justifié. Ceci est dit, ArrayList implémente bien un tableau dynamique.
De toute façon, l'idéal à mon avis c'est de retourner une liste chainée.
Sami - Methodix, tunis
Le génie de Newton a consisté à dire que la lune tombe alors que tout le monde voit bien qu'elle ne tombe pas.
(Paul Valéry)

methodiX
Admin
Admin

Sexe:Masculin
Messages : 811
Inscrit le : 22 Mar 2007
Localisation : marsa - IPEST

Feuille de personnage
Capacité linguistique:
1000/1000  (1000/1000)

Revenir en haut Aller en bas

Re: Nombre de mots d'une phrase

Message par methodiX le Dim 6 Jan - 21:34

manianis a écrit:Je crois que la solution la plus simple consiste à sauter les espaces de début et de fin et de compter ensuite le nombre de séparateurs entre les mots : nbSep (tabulations, esapces, retours à la ligne, signes de ponctuation...)

Le nombre de mots doit être égal à : nbSep + 1


pourtant, je trouve cette solution un peu plus compliquée que celle postée ci-dessus Smile celle ne prend en compte que les char où isLettre(char) retourne True. Donc, elle ignore bien les autres char.

Ca me plait ce genre de discussion/défi Very Happy
Sami - Methodix, tunis
Le génie de Newton a consisté à dire que la lune tombe alors que tout le monde voit bien qu'elle ne tombe pas.
(Paul Valéry)

methodiX
Admin
Admin

Sexe:Masculin
Messages : 811
Inscrit le : 22 Mar 2007
Localisation : marsa - IPEST

Feuille de personnage
Capacité linguistique:
1000/1000  (1000/1000)

Revenir en haut Aller en bas

Re: Nombre de mots d'une phrase

Message par manianis le Dim 6 Jan - 21:38

Faire une fonction en C/C++ qui retoune le nombre de mots d'un texte donné.

On demande bien le nombre de mots et non pas les mots.

methodiX a écrit:le nombre de mots n'est pas connu d'avance. Donc, le recours aux
tableaux dynamiques est justifié. Ceci est dit, ArrayList implémente
bien un tableau dynamique.
De toute façon, l'idéal à mon avis c'est de retourner une liste chainée.

Oui, c'est correct. Mais, la réponse donnée ne répond pas à aucune des questions posées ci-dessus.

- fonction en C/C++ (car on est dans la rubrique C++)
- nombre de mots (pour se conformer à l'énoncé)


Cependant, la réponse reste acceptable. Personnellement je lui donne 10/10. Elle est bien claire et trés bien rédigée.

manianis
Admin
Admin

Sexe:Masculin
Messages : 976
Inscrit le : 10 Oct 2007
Localisation : Tunisie

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

Revenir en haut Aller en bas

Re: Nombre de mots d'une phrase

Message par manianis le Dim 6 Jan - 21:43

methodiX a écrit:pourtant, je trouve cette solution est un peu plus compliquée que celle postée ci-dessus Smile celle ci ne prend en compte que les chars où isLettre(char) retourne True. Donc, elle ignore bien les autres char.

Je crois que Nabil ne voulait pas nous limiter à isLettre. Mais il donnait un exemple comment on pourrait faire. Il est possible d'ajouter une autre fonction :
Code:
bool estSeparateur(char c)


methodiX a écrit:Ca me plait ce genre de discussion/défi Very Happy

Je suis de votre avis.

manianis
Admin
Admin

Sexe:Masculin
Messages : 976
Inscrit le : 10 Oct 2007
Localisation : Tunisie

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

Revenir en haut Aller en bas

Re: Nombre de mots d'une phrase

Message par methodiX le Dim 6 Jan - 21:58

à la manière d'informix une méthode JAVA qui détermine uniquement le nombre de mots:

Code:

    static public int wordsCount(String text) {
        if (text==null || text.length()==0) return 0;
        int nbr = 0;
        boolean _begin = false;
       
        for (int i=0;i < text.length() ; i++) {
            if (_begin && !MotAlpha.isLettre(text.charAt(i))) {
                _begin = false;
                nbr = nbr + 1;
            }
            if (!_begin && MotAlpha.isLettre(text.charAt(i)))
                _begin = true;
        }
        if (_begin) ++nbr;           
        return nbr;
    }
Sami - Methodix, tunis
Le génie de Newton a consisté à dire que la lune tombe alors que tout le monde voit bien qu'elle ne tombe pas.
(Paul Valéry)

methodiX
Admin
Admin

Sexe:Masculin
Messages : 811
Inscrit le : 22 Mar 2007
Localisation : marsa - IPEST

Feuille de personnage
Capacité linguistique:
1000/1000  (1000/1000)

Revenir en haut Aller en bas

Re: Nombre de mots d'une phrase

Message par manianis le Dim 6 Jan - 22:03

Chokran jazilen king
Bonne adaptation methodiX

manianis
Admin
Admin

Sexe:Masculin
Messages : 976
Inscrit le : 10 Oct 2007
Localisation : Tunisie

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum