Voyelles

Fermé
bebelof Messages postés 3 Date d'inscription dimanche 11 octobre 2015 Statut Membre Dernière intervention 11 octobre 2015 - 11 oct. 2015 à 02:25
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 11 oct. 2015 à 17:04
Ecrire un programme C qui lit un texte se terminant par # (utiliser getchar), et affiche le nombre de mots contenant au moins 5 voyelles (A, E, I, O, U, Y)
A voir également:

2 réponses

Smiley32 Messages postés 155 Date d'inscription lundi 7 juillet 2014 Statut Membre Dernière intervention 10 février 2016 23
11 oct. 2015 à 09:58
Salut,
1- Tu récupère ta chaine
2- Tu parcours ta chaine avec une boucle
3- Tu note si tu tombe sur une voyelle (utiliser des strcmp)
4- Si tu tombe sur 5 voyelles, tu note
5- Si tu tombe sur un espace, tu remet à zéro le nb de voyelles
6- Tu continue jusqu'à #

Voilà, c'est pas sorcier et je pense que tu devrais essayer de chercher un peu, non ?
0
bebelof Messages postés 3 Date d'inscription dimanche 11 octobre 2015 Statut Membre Dernière intervention 11 octobre 2015
11 oct. 2015 à 12:34
mais j'ai pas le droit d'utiliser ni les tableaux ni les chaines
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
11 oct. 2015 à 14:16
Strcmp() ? C'est pour comparer des chaînes de caractères, pas des lettres
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
Modifié par fiddy le 11/10/2015 à 14:22
Bonjour,

Pourquoi enlever le "bonjour" mis automatiquement ? Comme partout ailleurs, merci de faire usage de politesse (bonjour, merci, etc.)..

Ensuite, nous ne sommes pas là pour faire les devoirs. Merci donc de nous dire ce que tu as commencé à faire, ce que tu ne parviens pas à faire, etc.

Pour ton programme, tu fais une boucle getchar() jusqu'à obtenir un '#'.
Ensuite, tu compares avec les voyelles, remets les compteurs à 0 lorsque tu rencontres une espace, etc.

Je te laisse réfléchir :-) et n'hésite pas à écrire ton programme en tenant compte de nos remarques, on te dira ce qui ne va pas.

Cdlt,

Google is your friend
0
bebelof Messages postés 3 Date d'inscription dimanche 11 octobre 2015 Statut Membre Dernière intervention 11 octobre 2015
11 oct. 2015 à 15:36
dsl fiddy pour mon manque de courtoisie
donc j'ai reussi a calculer le nombre de mots mais je vois pas comment les isoler et puis voir la longueur et les voyellles merci de me donner un indice sans chaines ni tableaux ni liste chainée :(
void main()
{
char x, preced=' ';
int nb=0;
while ( (x=getchar()) !='#')
{
if (x==' '|| x==','|| x==';' || x=='.' )
{
if

(preced!=' ' && preced!=',' && preced!=';' && preced!='.')
{
nb++;
}
}
preced=x;
}
if (preced!=' ' && preced!=',' && preced!=';' && preced!='.')nb++;
printf("\n le nombre de mots est %d",nb);

getch();
}
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
Modifié par fiddy le 11/10/2015 à 17:05
Ah, bon début :-).
Quelques remarques :
void main() n'est pas le bon prototype. Utilise plutôt : int main(void)
char x; Utilise plutôt un int pour cette variable => int x;
preced=' '; même remarque => int preced;

if (preced!=' ' && preced!=',' && preced!=';' && preced!='.')nb++;
Pourquoi tu as 2 fois cette lignes ?

D'ailleurs, je te conseille d'utiliser une fonction pour détecter si la lettre est un de ces caractères. Sinon tu peux utiliser strchr().

Et n'oublie pas en fin de main(), un return 0;

Ensuite, pour répondre à ta question, il te suffit d'une variable voyelle que tu initialises à 0 dès que tu changes de mot.
Pour chaque lettre, tu regardes si le caractère est une voyelle. Si c'est le cas alors tu incrètementes ta variable.
Dès que tu détectes un nouveau mot, tu vérifies si ta variable voyelle est supérieure ou égal à 5. Si oui, tu incrémentes ta variable nbMot5Voyelles.

Note : lorsque tu postes ton code, tu peux utiliser la balise "code c".
Exemple : <code c>ici tu mets ton code</code>
Cdlt,
0