3 votes

Comment puis-je vérifier si la chaîne d'entrée contient une combinaison de majuscules et de minuscules?

Je voudrais savoir comment vérifier si la chaîne d'entrée contient une combinaison de lettres majuscules et minuscules. Ensuite, affichez une déclaration pour montrer que la chaîne d'entrée contient une combinaison de lettres majuscules et minuscules.

4voto

uʍop ǝpısdn Points 16540

Étape 0 : variables nécessaires

char* str;
int i;
char found_lower, found_upper;

Étape 1 : itérer à travers la chaîne de caractères

for (int i = 0; str[i] != '\0'; i++)

Étape 2 : détecter les caractères en majuscules et minuscules

found_lower = found_lower || (str[i] >= 'a' && str[i] <= 'z')
found_upper = found_upper || (str[i] >= 'A' && str[i] <= 'Z')

Étape 3 : combiner les résultats

mixed_case = found_lower && found_upper

Étape 4 (optionnel) sortir de la boucle for tôt pour gagner du temps

if (found_lower && found_upper) break;

Source complète (attention : non testée) :

char is_mixed(char* str) {

    int i;
    char found_lower = false, found_upper = false;

    for (int i = 0; str[i] != '\0'; i++) {
        found_lower = found_lower || (str[i] >= 'a' && str[i] <= 'z');
        found_upper = found_upper || (str[i] >= 'A' && str[i] <= 'Z');

        if (found_lower && found_upper) break;
    }

    return (found_lower && found_upper);

}

3voto

WhozCraig Points 32734

Quelque chose comme ceci (qui fonctionnera sur les plateformes ASCII et EBCDIC) :

#include 

int hasMixedCase(const char *src)
{
    int hasUpper=0, hasLower=0;
    for (;*src && !(hasUpper && hasLower);++src)
    {
        hasUpper = hasUpper || (isalpha(*src) && *src == toupper(*src));
        hasLower = hasLower || (isalpha(*src) && *src == tolower(*src));
    }
    return hasLower && hasUpper;
}

1voto

Drakosha Points 6360

Parcourir chaque caractère de la chaîne d'entrée (je suppose qu'il s'agit d'ASCII) et vérifier si le caractère est une lettre minuscule. Dans ce cas, définissez sur vrai une variable qui indique si une lettre minuscule a été rencontrée. Faites de même pour les majuscules (ou vous pourriez le faire dans la même boucle). Ensuite, formez votre sortie en fonction des deux variables booléennes.

1voto

mmhasannn Points 10115
#include 
#include 

int main ()
{

  char* str="Chaîne de test.\n";
  int Uflag=0;
  int Lflag=0;
  char c;
  for (int i=0; i

0voto

Tuxdude Points 8652
unsigned int len = strlen(inputStr);
bool containsUpperCase = false;
bool containsLowerCase = false;

for (int i = 0; i < len && !(containsUpperCase && containsLowerCase); ++i)
{
    char c = inputStr[i];
    if (c >= 'A' && c <= 'Z')
        containsUpperCase = true;
    else  if (c >= 'a' && c <= 'z'))
        containsLowerCase = true;
}

printf("Contient des lettres majuscules : %d Contient des lettres minuscules : %d\n",
       containsUpperCase, containsLowerCase);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X