Compteurs de voyelles [Résolu]

Signaler
Messages postés
7
Date d'inscription
dimanche 2 avril 2006
Statut
Membre
Dernière intervention
4 avril 2006
-
Messages postés
7
Date d'inscription
dimanche 2 avril 2006
Statut
Membre
Dernière intervention
4 avril 2006
-
Bonjour,
en faite je n'arrive pas a faire ce programme : = =>
Écrire un programme C qui calcule le nombre de voyelles (ou de consonnes) dans un texte non accentué et terminé par un caractère # . On suppose que le texte n'est composé que de lettres minuscules non accentuées, que les mots ne sont séparés que par des espaces, qu'il n'y a aucune ponctuation


____________________________________
Micoo ==> The Special Agent
____________________________________

13 réponses

Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
12
Bon je crois que cette fois c'est la bonne.



int n = 0;


char chaine[256], *c;

gets(chaine);
c = chaine;

while(*c)
{
switch(*c)
{
case 'a': case 'e': case: 'i': case 'o': case 'u': case 'y': n++;
break;
//Meme chose pour les consonnes
}
*c++;
}

___________________________________________
Les plus grands esprits trouvent toujours une solution
Messages postés
118
Date d'inscription
mercredi 24 décembre 2003
Statut
Membre
Dernière intervention
11 décembre 2011

Voici un exemple simple



char *Texte = "ma chaine de caractere";

char Tab[255];

int len,i=0;

int voyelle;



len = strlen(Texte);

strcpy(Tab,Texte);



for (i=0;i<=len;i++)

{

if (Tab[i] == 'a')

voyelle++; //1 voyelle

//etc

}

Ciao
Messages postés
7
Date d'inscription
dimanche 2 avril 2006
Statut
Membre
Dernière intervention
4 avril 2006

____________________________________
Micoo ==> The Special Agent
____
Messages postés
7
Date d'inscription
dimanche 2 avril 2006
Statut
Membre
Dernière intervention
4 avril 2006

Bonjour,


j'ai essayé votre synthaxe mais il ne marche pas aussi


#include<stdio.h>


int main()


{


char * Texte ="ma chaine de caractere";


char Tab[255];


int len,i=0;


int voyelle;


printf("entrez votre Texte ==> \n");


scanf("%c",&Texte);


len = strlen(Texte);


strcpy(Tab,Texte);


for (i=0;i<=len;i++)


{


if (Tab[i] == 'a')


voyelle++;


if (Tab[i] == 'e')


voyelle++;


if (Tab[i] == 'i')


voyelle++;


if (Tab[i] == 'o')


voyelle++;


if (Tab[i] == 'u')


voyelle++;


if (Tab[i] == 'v')


voyelle++;


if (Tab[i] == 'y')


voyelle++;


printf("le nombre de voyelle est ==> %d\n",voyelle);


}
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
23
len = strlen(chaine); // 1er PARCOURS INUTILE

int n = 0;
char *c = chaine;
while(*c) {
switch(*c) {
case 'a': case 'e': case: 'i': case 'o': case 'u': case 'y': n++;
}
c++;
}

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
Messages postés
118
Date d'inscription
mercredi 24 décembre 2003
Statut
Membre
Dernière intervention
11 décembre 2011

Si il marche le problème c'est que ta mal utiliser scanf , jai donner
un exemple sur un chaine au hazard.le code adapté serait....



char Tab[255];

int len,i=0;

char cara;

int voyelle;





printf("Entrer la chaine...\n");



scanf("%c",&cara);

Tab[i]=cara;



while (cara != '\n')

{

i++;

scanf("%c",&cara);

Tab[i]=cara;



}





for (i=0;i<=len;i++)

{

if (Tab[i] == 'a')

voyelle++; //1 voyelle

//etc

}
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
12
Pour une méthode performente, regrouper les méthode de BruNews et TeniX donc:

int n = 0;
char c[256];

//C'est incertain ici car scanf va arrêter au espace je crois
scanf("%s", chaine);
ou
gets(chaine);
// L'important est de récupérer la chaine de caractère complète

while(*c)
{
switch(*c)
{
case 'a': case 'e': case: 'i': case 'o': case 'u': case 'y': n++;
break;
//Meme chose pour les consonnes
}
c++;
}

___________________________________________
Les plus grands esprits trouvent toujours une solution
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
12
Oki je vien de tester. Utilise pas scanf, utilise gets pour récupérer toute la chaine.

___________________________________________
Les plus grands esprits trouvent toujours une solution
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
12
Donc en gros pour reformuler car je vien de m'apercevoir que j'ai fait des erreures:

int n = 0;
char c[256];

gets(c);

while(*c)
{
switch(*c)
{
case 'a': case 'e': case: 'i': case 'o': case 'u': case 'y': n++;
break;
//Meme chose pour les consonnes
}
c++;
}

___________________________________________
Les plus grands esprits trouvent toujours une solution
Messages postés
7
Date d'inscription
dimanche 2 avril 2006
Statut
Membre
Dernière intervention
4 avril 2006

Merci pour votre aide.Je vien de tester le synthaxe mais il m'affiche toujours ce probleme " wrong type argument to increment"


____________________________________
Micoo ==> The Special Agent
____________________________________
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
12
int n = 0;
char c[256];

gets(c);

while(*c)
{
switch(*c)
{
case 'a': case 'e': case: 'i': case 'o': case 'u': case 'y': n++;
break;
//Meme chose pour les consonnes
}
*c++;
}

___________________________________________
Les plus grands esprits trouvent toujours une solution
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
23
char chaine[256], *c;
gets(chaine);
c = chaine;
etc...

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
Messages postés
7
Date d'inscription
dimanche 2 avril 2006
Statut
Membre
Dernière intervention
4 avril 2006

Merci il fonctionne parfaitement


____________________________________
Micoo ==> The Special Agent
____________________________________