Exercice en programme c
Résolu
mannour85
Messages postés
91
Statut
Membre
-
mannour85 Messages postés 91 Statut Membre -
mannour85 Messages postés 91 Statut Membre -
Bonjour, j'ai essayer de corriger cet exercice en c mais j'ai pas eu une bonne exécution j'ai besoin d'aide .voici l'exercice puis mon essai.
exercice:
Ecrire un programme C qui accepte un texte qui se termine par le caractère `#' et qui affiche en sortie :
1/ Le nombre de caractères minuscules
2/ Le nombre de caractères majuscules
3/ Le nombre de chiffres
4/ Le nombre de lignes
5/ Le nombre de séparateurs
6/ La longueur du mot le plus long
mon 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=sep+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;
}}}
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() ;
}
exercice:
Ecrire un programme C qui accepte un texte qui se termine par le caractère `#' et qui affiche en sortie :
1/ Le nombre de caractères minuscules
2/ Le nombre de caractères majuscules
3/ Le nombre de chiffres
4/ Le nombre de lignes
5/ Le nombre de séparateurs
6/ La longueur du mot le plus long
mon 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=sep+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;
}}}
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() ;
}
A voir également:
- Exercice en programme c
- Programme demarrage windows - Guide
- Mettre en veille un programme - Guide
- Programme word gratuit - Guide
- Message programmé iphone - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
6 réponses
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.
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 ();
}
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.
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
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() ;
}