Programme pour compter les minuscules
Bonjour tout le monde,
Je débute en langage C et je cherche à faire un programme qui pourrait ne compter que les minuscules dans une chaine de caractère.
Pour l'instant j'ai réalisé ceci :
Code:
1 2 3 4 5 6 7 8 9
| char chaine[] = "Salut";
int taille = 0;
int i = 0;
//On récupère la longueur de la chaîne dans taille
taille = strlen(chaine);
for(i=0; i<taille; i++)
{
printf("%c", chaine[i]);
} |
Elle me permet d'afficher le tableau de char caractères après caractères, juste pour tester :roll:
Pour conserver les minuscules je pensais incrémenter un compteur dans une boucle if, en utilisant le code ascii.
Comment pourrais-je faire une boucle : "si char[i] a un code ascii compris entre 97 et 122" ?
Merci par avance :)
Recherche de lettre minuscule dans une chaîne
Pour répondre spécifiquement à la question, je vous propose d'utiliser la fonction prédéfinie islower.
Elle a pour prototype int islower(char c) : elle fournit la valeur 1 (vrai) si c est une lettre minuscule et la valeur 0 (faux) dans le cas contraire.
Donc vous devez réaliser un test sur chaque caractère de la chaîne, en utilisant la fonction ci-dessus.
Au boulot !
Compter les lettres minuscules d'une chaîne : ma proposition
Je propose un programme complet. Certainement pas le meilleur, mais...
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
| #include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#define LONGMAX_CHAINE 999
int main()
{
char chaine[LONGMAX_CHAINE + 1];
int i, nombre_minuscule;
char reponse;
do
{
system("cls");
printf("\n\n\t\tDETERMINATION DU NOMBRE DE MINUSCULES DANS UNE CHAINE\n\n");
printf("Entrez votre chaine de caracteres : ");
scanf("%s", chaine);
system("cls");
printf("\n\n\t\tDETERMINATION DU NOMBRE DE MINUSCULES DANS UNE CHAINE\n\n");
printf("Liste des minuscules dans la chaine \"%s\"\n", chaine);
nombre_minuscule = 0;
for(i=0; chaine[i] != '\0'; i++)
{
if(islower(chaine[i]))
{
printf("%c\t", chaine[i]);
nombre_minuscule++;
}
}
printf("\n");
if(nombre_minuscule == 0)
{
printf("Cette chaine ne contient AUCUNE lettre minuscule");
}
else
{
if(nombre_minuscule == 1)
{
printf("Cette chaine contient UNE lettre minuscule");
}
else
{
printf("Cette chaine contient %d lettres minuscules", nombre_minuscule);
}
}
printf("\n\n");
do
{
printf("Voulez-vous traiter une autre chaine de caracteres (O/N)? : ");
fflush(stdin);
scanf("%c", &reponse);
}
while((reponse != 'o')&&(reponse != 'O')&&(reponse != 'n')&&(reponse != 'N'));
}
while((reponse != 'n')&&(reponse != 'N'));
return 0;
} |