Exercice en programme c
Résolu/Fermé
mannour85
Messages postés
69
Date d'inscription
lundi 11 mai 2009
Statut
Membre
Dernière intervention
25 avril 2015
-
7 déc. 2010 à 11:58
mannour85 Messages postés 69 Date d'inscription lundi 11 mai 2009 Statut Membre Dernière intervention 25 avril 2015 - 7 déc. 2010 à 18:16
mannour85 Messages postés 69 Date d'inscription lundi 11 mai 2009 Statut Membre Dernière intervention 25 avril 2015 - 7 déc. 2010 à 18:16
A voir également:
- Exercice en programme c
- Programme demarrage windows 10 - Guide
- Désinstaller programme windows 10 - Guide
- Mettre en veille un programme - Guide
- Forcer la fermeture d'un programme - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
6 réponses
Nanolenain
Messages postés
72
Date d'inscription
lundi 6 décembre 2010
Statut
Membre
Dernière intervention
3 février 2012
11
7 déc. 2010 à 16:29
7 déc. 2010 à 16:29
Salut,
Donc, déjà y a une erreur dans tes deux premiers if : il faut que c soit supérieur ou égal a 'a' et 'A' et non pas "<=".
Sinon, pourquoi entoures-tu tes caractères d'une quote ' et d'un backquote ' ? Entoures les juste avec des quotes (ex: c=='\n').
Si tu as d'autre erreurs, il pourrait être intéressant de savoir ce qu'affiche exactement ton programme et si tu n'as pas de warning ou erreur a la compilation.
Donc, déjà y a une erreur dans tes deux premiers if : il faut que c soit supérieur ou égal a 'a' et 'A' et non pas "<=".
Sinon, pourquoi entoures-tu tes caractères d'une quote ' et d'un backquote ' ? Entoures les juste avec des quotes (ex: c=='\n').
Si tu as d'autre erreurs, il pourrait être intéressant de savoir ce qu'affiche exactement ton programme et si tu n'as pas de warning ou erreur a la compilation.
flo13142
Messages postés
71
Date d'inscription
mardi 7 décembre 2010
Statut
Membre
Dernière intervention
21 février 2011
18
7 déc. 2010 à 16:33
7 déc. 2010 à 16:33
A première vu, tu ne fais qu'un c=getchar() en début
et ensuite un while (c !='#'), du coup tu pars en boucle infini
il faudrait commencer par :
et ensuite un while (c !='#'), du coup tu pars en boucle infini
il faudrait commencer par :
c=getchar (); while (c != '#') { ... c=getchar (); }
Nanolenain
Messages postés
72
Date d'inscription
lundi 6 décembre 2010
Statut
Membre
Dernière intervention
3 février 2012
11
7 déc. 2010 à 16:43
7 déc. 2010 à 16:43
Ouch, en effet, je n'avais pas vu ca...^^
Nanolenain
Messages postés
72
Date d'inscription
lundi 6 décembre 2010
Statut
Membre
Dernière intervention
3 février 2012
11
7 déc. 2010 à 17:42
7 déc. 2010 à 17:42
Je me suis permis de clarifier ton code et de corriger deux trois erreurs. j'ai commente ce que j'avais pour que tu comprennes, dis-moi si ce n'est pas assez clair.
Juste une précision avant de partir, tu peux mettre des balises
tu utilisais deux if pour tes séparateurs, il y en avais donc un qui n'était jamais utilise... J'ai remplace tes "else { if" par des "else if", c'est plus propre et ca simplifie le code.
Juste une précision avant de partir, tu peux mettre des balises
pour poster du code, ca simplifie la lecture : <code> #include<stdio.h> #include<conio.h> main() { char c; int nmin=0,nmaj=0,nch=0,nlig=1,nsep=0,l=0,max=0; c=getchar(); while (c!='#') { if((c>='A')&&(c<='Z')) //Verifie que c'est une majuscule - tu avais oublie d'inverser le chevron nmaj=nmaj+1; else if((c>='a')&&(c<='z'))// Verifie que c'est une minuscule nmin=nmin+1; else if(c==' '||c=='\n'||c=='.'||c==',')// J'ai remis tous les separateurs ensemble, c'est plus clair et plus logique. { nsep=nsep+1; //C'est un separateur donc tu increment nsep if (c=='\n') //si c'est aussi un saut de ligne, tu increment nlig nlig=nlig+1; if(l>max) // Si le mot que tu vient de lire est plus long que l'ancien, tu stocke la nouvelle longueur max. max=l; l=0; //Tu viens de lire un separateur donc tu commence un nouveau mot } l=l+1; //a incrementer quoiqu'il arrive, pas dans un else sinon, on pourrait entrer dans le tout premier if et cette valeur ne serait pas incrementee... c=getchar(); } printf(" Le nombre de caractères minuscules est %d\n ",nmin) ; printf(" Le nombre de caractères majuscules est %d \n",nmaj) ; printf(" Le nombre de chiffres est %d\n ",nch) ; printf(" Le nombre de lignes est %d\n ",nlig) ; printf(" Le nombre de séparateurs est %d\n ",nsep) ; printf(" La longueur du mot le plus long est%d\n ",max) ; getch() ; }
tu utilisais deux if pour tes séparateurs, il y en avais donc un qui n'était jamais utilise... J'ai remplace tes "else { if" par des "else if", c'est plus propre et ca simplifie le code.
flo13142
Messages postés
71
Date d'inscription
mardi 7 décembre 2010
Statut
Membre
Dernière intervention
21 février 2011
18
7 déc. 2010 à 17:46
7 déc. 2010 à 17:46
si tu fais :
tu regardes si c est inf ou égal à 'A', or il faut qu'il soit supérieur ou égal :
de même pour les minuscules.
pour ton nombre de ligne, tu ne rentre jamais dans ton test
car tu es passé dans le if du dessus en amont
pour les chiffres il faut faire pareil que les lettres :
if((c<='A')&&(c<='Z')
tu regardes si c est inf ou égal à 'A', or il faut qu'il soit supérieur ou égal :
if (c >= 'A' && c <= 'Z') nmaj++
de même pour les minuscules.
pour ton nombre de ligne, tu ne rentre jamais dans ton test
else{ if(c='\n') nlig=nlig+1;
car tu es passé dans le if du dessus en amont
pour les chiffres il faut faire pareil que les lettres :
if ( c >= '0' && c <='9')
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
mannour85
Messages postés
69
Date d'inscription
lundi 11 mai 2009
Statut
Membre
Dernière intervention
25 avril 2015
7 déc. 2010 à 17:12
7 déc. 2010 à 17:12
MERCI POUR L'AIDE.VOICI UN NOUVEAU ESSAI:
#include<stdio.h>
#include<conio.h>
main()
{ char c;
int nmin=0,nmaj=0,nch=0,nlig=1,nsep=0,l=0,max=0;
c=getchar();
while (c!='#')
{if((c<='A')&&(c<='Z'))
nmaj=nmaj+1;
else {
if((c>='a')&&(c<='z'))
nmin=nmin+1;
else
{ if(c==' '||c=='\n'||c=='.'||c==',')
nsep=nsep+1;
else{ if(c='\n')
nlig=nlig+1;
else if(c==' '||c=='\n'||c=='.'||c==',')
{if(l>max)
max=1;
l=0;}
else l=l+1;
}}}c=getchar();}
printf(" Le nombre de caractères minuscules est %d\n ",nmin) ;
printf(" Le nombre de caractères majuscules est %d \n",nmaj) ;
printf(" Le nombre de chiffres est %d\n ",nch) ;
printf(" Le nombre de lignes est %d\n ",nlig) ;
printf(" Le nombre de séparateurs est %d\n ",nsep) ;
printf(" La longueur du mot le plus long est%d\n ",max) ;
getch() ;
}
#include<stdio.h>
#include<conio.h>
main()
{ char c;
int nmin=0,nmaj=0,nch=0,nlig=1,nsep=0,l=0,max=0;
c=getchar();
while (c!='#')
{if((c<='A')&&(c<='Z'))
nmaj=nmaj+1;
else {
if((c>='a')&&(c<='z'))
nmin=nmin+1;
else
{ if(c==' '||c=='\n'||c=='.'||c==',')
nsep=nsep+1;
else{ if(c='\n')
nlig=nlig+1;
else if(c==' '||c=='\n'||c=='.'||c==',')
{if(l>max)
max=1;
l=0;}
else l=l+1;
}}}c=getchar();}
printf(" Le nombre de caractères minuscules est %d\n ",nmin) ;
printf(" Le nombre de caractères majuscules est %d \n",nmaj) ;
printf(" Le nombre de chiffres est %d\n ",nch) ;
printf(" Le nombre de lignes est %d\n ",nlig) ;
printf(" Le nombre de séparateurs est %d\n ",nsep) ;
printf(" La longueur du mot le plus long est%d\n ",max) ;
getch() ;
}
mannour85
Messages postés
69
Date d'inscription
lundi 11 mai 2009
Statut
Membre
Dernière intervention
25 avril 2015
7 déc. 2010 à 18:16
7 déc. 2010 à 18:16
un grand merci les amis c'est resolu