Convertir minuscule en majuscule et inverssement sans "string.h"

Soyez le premier à donner votre avis sur cette source.

Snippet vu 28 456 fois - Téléchargée 27 fois

Contenu du snippet

#include "include.h"

// Si l'on fais un fais un programme style :

for(int i = 1; i <= 255; i++)
{
cout << char(i) << " = " << i << endl;
}
/*
min maj difference
A 65 97 32
Z 90 122 32

on remarque que les majuscules et les minuscules sont espacées de 32 donc c'est ce qui ma permis de faire cette fonction.
  • /

Source / Exemple :


char MAJUSCULE(char min) // minuscule --> MAJUSCULE
{
	char maj;
	(char)maj = (char)min;
 	if((int)min <= 90 && (int)min >= 65) // majuscule
	{
		return (char)maj;
	}
	else
	{
		if((int)min <= 122 && (int)min >= 97) // minuscule
		{
			return (char)((int)maj - 32);
		}
		else
		{
			return min; // ce n'est pas une lettre
		}
	}
}

char minuscule(char maj) // MAJUSCULE --> minuscule
{
	char min;
	(char)min = (char)maj;
 	if((int)maj <= 90 && (int)maj >= 65) // majuscule
	{
		return (char)((int)min + 32);
	}
	else
	{
		if((int)maj <= 122 && (int)maj >= 97) // minuscule
		{
			return (char)min;
		}
		else
		{
			return maj; // ce n'est pas une lettre
		}
	}
}

Conclusion :


//- - - - - - - - - -
/*eXemple*/

cout << MAJUSCULE("a"); // --> resultat "A"
cout << muniscule("A"); // --> resultat "a"
cout << MAJUSCULE("A"); // --> resultat "A"
cout << miniscule("a"); // --> resultat "a"
cout << MAJUSCULE("!"); // --> resultat "!"
cout << minuscule("!"); // --> resultat "!"

/*Enfin pour resumer C relativement basic*/

A voir également

Ajouter un commentaire

Commentaires

garslouche
Messages postés
584
Date d'inscription
mardi 26 novembre 2002
Statut
Membre
Dernière intervention
29 mai 2015
-
Ta source ne tient pas compte des caractères accentués et des cédilles ni de æ et o. De plus elle ne permet pas de passer toutes une chaine de caractères en maujuscules ou en minuscule
-> interet très très limité !
cs_Gerald
Messages postés
31
Date d'inscription
dimanche 15 juillet 2001
Statut
Membre
Dernière intervention
8 janvier 2009
-
#define tolower(caractere) caractere|=(1<<5)
:p
skone007
Messages postés
166
Date d'inscription
mercredi 24 avril 2002
Statut
Membre
Dernière intervention
23 juin 2009
-
garslouche --> Même string ne gère pas ca mais C fesable ce que tu demande Mais C trop long a gerer les IF et tt ca

Gerald --> Je veux bien mais je comprend pas ton truk
garslouche
Messages postés
584
Date d'inscription
mardi 26 novembre 2002
Statut
Membre
Dernière intervention
29 mai 2015
-
C'est pas parceque string ne la gère pas de base que c'est difficile à faire! Et string est loin d'être une classe complète....

Quoiqu'il en soit, un code comme celui-ci devrait faire l'affaire

string minuscule(string szTexte)
{
string szMin = "abcdefghijklmnopqrstuvwxyzàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþ";
string szMaj = "ABCDEFGHIJKLMNOPQRSTUVWXYZÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ";

string szRes = "";

for (int i=0; i<szTexte.length(); i++)
{
int nPos = szMaj.find(szTexte.at(i));
if (nPos != -1)
szRes.append(szMin.substr(nPos,1));
else
szRes.append(szTexte.substr(i,1));
}

return szRes;
}
cs_Gerald
Messages postés
31
Date d'inscription
dimanche 15 juillet 2001
Statut
Membre
Dernière intervention
8 janvier 2009
-
lol non c juste que si tu regarde le code ASCII pour passer de maj. en min. il faut placer un 1 au bit 5:
b7 b6 b5 b4 b3 b2 b1 b0
0 1 0 0 0 0 0 1 A(65)
0 1 1 0 0 0 0 1 a(97)
d'où le 1<<5, qui, ajouté à une majuscule ASCII passe en minuscule.
Bon, il faut faire le test soit meme sinon, on obtient des résultats non-voulus

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.