Conditions en C++

Fermé
Franky23 - 26 juin 2008 à 06:13
Sri Lumpa Messages postés 177 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 1 juin 2010 - 26 juin 2008 à 08:41
Bonjour,

je travaille depuis tout récemment en C++. Je travaille avec les conditions mais j'arrive seulement à les faire fonctionner avec des chiffres.

Ex.
long nombreEntre = 0;

cout << "8 + 2 = ";
cin >> nombreEntre;

if (nombreEntre == 10)
{

cout << "Exact" << endl;
}

else
{
cout << "Faux" << endl;
}

-----------------------------
Moi je veux cela avec des chaînes de caractères comme ceci :

char pseudo[] = "";
char valide[] = "Frank";

cout << "Votre pseudo : ";
cin >> pseudo;

if (pseudo == valide)
{
cout << "Vous pouvez entrer" << endl;
}

else
{
cout << "Quittez S.V.P." << endl;
}

-----------------------------

Résultat : Si j'entre Frank, on inscrit "Vous pouvez entrer". Si j'écris autre chose, on inscrit "Quittez S.V.P.". Dans mon cas, il fait comme si ce n'était jamais égal car j'entre "Frank" mais il m'écrit "Quittez S.V.P.".

Aidez-moi vite!!!

2 réponses

Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
26 juin 2008 à 08:34
Houlà !
Je t'arrete tout de suite, ce que tu fait là ce sont des énormité !
char[] ou char*, ce sont des pointeurs (des adresses mémoire) toute opération faite dessus s'apparente à comparer des adresses mémoire, ce qui n'est pas ce que tu cherche à faire. Comme tu fait du C++ et non du C, je te conseil (pour l'instant) de ne pas t'occuper de ces histoires (tu risque de perdre beaucoup de temps pour pas grand chose) et d'utiliser les "string".
#include <string>
std::string valide="Frank";
Les string sont des objets d'un plus haut niveau et beaucoup plus intuitif que les char[].
Dans ton programme, il suffit juste de changer le type des chaines de caractère.
0
Sri Lumpa Messages postés 177 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 1 juin 2010 69
26 juin 2008 à 08:41
Pour comparer des chaines tu es obligé d'utiliser des fonctions, tu ne peux pas les comparer "brutalement" avec un == car alors tu compares leur adresse dans la mémoire qui, sauf si il s'agit exactement de la même variable, seront forcement différentes. Si tu veux plus d'infos sur les adresses (ou aussi pointeurs), cherche quelques tutos sur internet (à mon avis c'est plus qu'indispensable quand tu fais du C).

Bref, si tu veux comparer des chaînes de caractères, tu dois utiliser une fonction pour. En C, tu as la fonction strcmp(char* chaine1, char* chaine2) dans string.h si j'ai bonne mémoire. Elle retourne 0 si les deux chaînes sont égales, -1 si chaîne2 est "supérieure" (dans l'ordre alphabétique) à chaîne1 et 1 dans le cas contraire. Au cas où, si tu as envie de t'amuser, fais ta propre fonction de comparaison ;)
0