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.
Réponses
Trop de publicités?É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);
}
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;
}
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.
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);
- Réponses précédentes
- Plus de réponses