Nombre de mots d'une phrase
Forum INFOMATH :: Enseignement de l'informatique :: INFO - Supérieur (Etudiants et Professionnels) :: C/C++
Page 1 sur 1•
Nombre de mots d'une phrase
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.
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


- Messages : 1908
Inscrit le : 19 Mar 2007
Localisation : Tunisie
Feuille de personnage
Capacité linguistique:


(999/1000)
Re: Nombre de mots d'une phrase
Cette fois je ne donnerai pas de solutions jusqu'a voir les contributions des autres.
manianis- Admin


- Messages : 976
Inscrit le : 10 Oct 2007
Localisation : Tunisie
Feuille de personnage
Capacité linguistique:


(999/1000)
Re: Nombre de mots d'une phrase
Bien fait
C'est ce que j'allais dire.
Nabil - tunis
خير الناس أنفعهم للناس
خير الناس أنفعهم للناس

nabiL- Admin


- Messages : 1908
Inscrit le : 19 Mar 2007
Localisation : Tunisie
Feuille de personnage
Capacité linguistique:


(999/1000)
Re: Nombre de mots d'une phrase
En JAVA, j'ai une solution. On peut la traduire en C++ aisément:
Vos commentaires?
- 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.
Les passions font vivre l'Homme; sa sagesse le fait seulement durer.

informix- Membre fondamental

- Messages : 350
Inscrit le : 19 Mar 2007
Feuille de personnage
Capacité linguistique:


(1000/1000)
Re: Nombre de mots d'une phrase
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
Le nombre de mots doit être égal à : nbSep + 1
manianis- Admin


- Messages : 976
Inscrit le : 10 Oct 2007
Localisation : Tunisie
Feuille de personnage
Capacité linguistique:


(999/1000)
Re: Nombre de mots d'une phrase
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


- Messages : 976
Inscrit le : 10 Oct 2007
Localisation : Tunisie
Feuille de personnage
Capacité linguistique:


(999/1000)
Re: Nombre de mots d'une phrase
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.
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)
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


- Messages : 811
Inscrit le : 22 Mar 2007
Localisation : marsa - IPEST
Feuille de personnage
Capacité linguistique:


(1000/1000)
Re: Nombre de mots d'une phrase
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
Ca me plait ce genre de discussion/défi
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)
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


- Messages : 811
Inscrit le : 22 Mar 2007
Localisation : marsa - IPEST
Feuille de personnage
Capacité linguistique:


(1000/1000)
Re: Nombre de mots d'une phrase
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


- Messages : 976
Inscrit le : 10 Oct 2007
Localisation : Tunisie
Feuille de personnage
Capacité linguistique:


(999/1000)
Re: Nombre de mots d'une phrase
methodiX a écrit:pourtant, je trouve cette solution est un peu plus compliquée que celle postée ci-dessuscelle 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
Je suis de votre avis.
manianis- Admin


- Messages : 976
Inscrit le : 10 Oct 2007
Localisation : Tunisie
Feuille de personnage
Capacité linguistique:


(999/1000)
Re: Nombre de mots d'une phrase
à 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)
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


- Messages : 811
Inscrit le : 22 Mar 2007
Localisation : marsa - IPEST
Feuille de personnage
Capacité linguistique:


(1000/1000)
Re: Nombre de mots d'une phrase
Chokran jazilen
Bonne adaptation methodiX
Bonne adaptation methodiX
manianis- Admin


- Messages : 976
Inscrit le : 10 Oct 2007
Localisation : Tunisie
Feuille de personnage
Capacité linguistique:


(999/1000)




