Condition C++ ne marche pas

Résolu/Fermé
jobertomeu Messages postés 1189 Date d'inscription dimanche 19 août 2007 Statut Membre Dernière intervention 5 février 2015 - 31 oct. 2009 à 19:00
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 - 1 nov. 2009 à 17:50
Bonjour,
je viens tout juste de lire un petit tuto sur le C++, mais le problème est que j'ai un problème avec les conditions, en C, pour faire une condition, ça donne un truc comme ça :


char pseudo[20];

printf("Votre pseudo : ");
scanf("%s", &pseudo);

if (pseudo == 'truc') {
printf("D'accord, acces accorde");
}
else{
printf("Acces non accorde");
}
</code


Mais, en C++, ça ne marche pas :'(
Voila mon code :

<code>

#include <iostream>

using namespace std;

int main()
{
    char pseudo[50];
    int age;
    char niveau[15] = "nul";
    int reboot = 0;
   
    
    
        cout << "              ---------- Le Grand test de l'informatique ---------- " << endl;
        cout << "         *********** Dans une console - Pour les pros aux newbies *********** \n\n\n" << endl;
        cout << "Pour commencer, Vous devrez repondre a differentes etapes pour choisir votre\nniveau de difficultee. A Chaque niveau gagne, un code niveau vous sera donnne, \nmarquez le bien, il vous servira a acceder au niveau dans lequel vous etiez\npour reprendre au meme stade. Suivez bien les etapes, remplissez les bien\nmiticuleusement et Bonne chance a tous !!!\n\n" << endl;
        system("PAUSE");
        // ETAPE 1
        system("CLS");
        cout << "              * Etape 1 *            \n\n\n" << endl; 
        cout << "- Entrer votre Pseudo :" << endl;
        cin >> pseudo;
        cout << "\n!!!!!!!!!!!! Bienvenue " << pseudo << " !!!!!!!!!!!! \n\n" << endl;
        cout << "- Quel avez vous ?" << endl;
        cin >> age;
        cout << "\nPseudo : " << pseudo << " - Age : " << age << " ans " " - donnees enregistrees. \n\n" << endl;
        system("PAUSE");
        // ETAPE 2
        while (reboot = 1) {
        system("CLS");
        cout << "            ** Etape 2 **            \n\n\n" << endl; 
        cout << "Comment califiriez vous votre niveau en informatique ? ( nul, mauvais, moyen, bon, tres bon, excellent, ultime ) : " << endl;
        cin >> niveau;
        if (niveau == "nul" || niveau == "Nul" || niveau == "mauvais" || niveau == "Mauvais" || niveau == "bon" || niveau == "Bon" || niveau == "tres bon" || niveau == "Tres bon" || niveau == "excellent" || niveau == "Excellent" || niveau == "ultime" || niveau == "Ultime" )
        {
             cout << "rentre dans les grands ifs =) \n\n" << endl;
             reboot = 0;
             system("PAUSE");
        }
        else
        {
            cout << "L'adjetif rentre n'a pas ete reconu par le moteur, veuillez reessayer. " << endl;
            reboot = 1;
              system("PAUSE");
        }
        }
         
         
         
         cout << " Reussi ! " << endl;
         system("PAUSE");
        return 0;
}


Je tiens a préciser, que le compilateur de m'indique aucune erreur, mais lorsque j'execute le programme, et que j'arrive au stade ou je demande le niveau, que je mette un mot comme "bon" ou "DSDSDSDS", il m'affiche toujours les instructions contenues dans le Else.

Merci de me dire ce qui ne va pas, je viens tout juste de le voir, donc, si il ya quelque chose qui m'échappe, n'hésitez pas a me le dire.

3 réponses

loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
1 nov. 2009 à 12:48
if (pseudo == 'truc') n'est pas faux mais ne fait certainement pas ce que tu attends de cette instruction.
En C, la chaîne de caractère n'existe pas en tant que type de variable, la comparaison est donc impossible. Pour obtenir cette fonctionnalité, il est nécessaire d'utiliser une fonction de type 'strcmp' qui permet de comparer deux chaînes de caractères. Je te laisse le soin de rechercher son prototype.
Bonne continuation.
0
jobertomeu Messages postés 1189 Date d'inscription dimanche 19 août 2007 Statut Membre Dernière intervention 5 février 2015 86
1 nov. 2009 à 13:28
Oui, j'ai trouvé hier soir vers 1h... C'est exactement j'ai trouvé la syntaxe et ça marche !
Merci de ta réponse quand même ;)
Au fait, par hasard, tu ne saurais pas comment on dit "entre" pour une condition, je voudrais faire ça :

si la variable niveauc est entre 5 et 8, alors ... parce que, je connais les symboles <, > <=, >= ==, != mais je ne connais pas pour dire "entre ça et ça" .....

Merci ;)
Si tu ne sais pas, je posterais sur le forum, mais c'est pour ne pas l'encombrer ;)
0
loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
1 nov. 2009 à 13:40
Si tu avais trouvé toi-même une réponse à ton problème, c'est bien... mais il eût été plus correct de le signaler immédiatement afin de ne pas faire perdre de temps (oh combien précieux!) à ceux qui ont cherché à t'aider.
5 < A <= 8 s'écrit simplement: (A > 5) && (A <= 8).
N'oublie pas de mettre en résolu. Merci.
0
jobertomeu Messages postés 1189 Date d'inscription dimanche 19 août 2007 Statut Membre Dernière intervention 5 février 2015 86
1 nov. 2009 à 13:54
Oui, je sais, mais je voulais le mettre ce matin, et finalement, je suis parti de chez moi ...
Merci pour tout ! Sujet résolu !!
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 660
1 nov. 2009 à 17:50
pour t'éviter ces tracas, et vu que tu fais du C++, utilises plutôt les string ! avec un #include <string> au début.
Tu les utilises exactement comme les chaines en C (avec cout et cin), sauf que tout ce qui est compliqué est plus simple. Ensuite, si pour une fonction tu as besoin d'un paramètre "char*" (une chaine type C), il y a la méthode cStr() ou un truc du genre.
0