If et Else en C++

Résolu/Fermé
Cytrox - 22 sept. 2010 à 19:27
overcode Messages postés 119 Date d'inscription jeudi 6 décembre 2007 Statut Membre Dernière intervention 21 octobre 2011 - 22 sept. 2010 à 20:52
Bonjour,

Je ne comprends pas grand chose en cours de C++ en ce moment
Et j'aurais besoin d'aide

Pourriez vous me dire ce qui ne va pas dans ce code?

#include <iostream>
using namespace std;
char mdp;
char hello;

int main()
{
    cout << "Entrez le mot de passe";
    cin >> mdp;
    if (mdp!=hello)

        cout << "Bien joue ca fonctionne";

    else

    cout << "T'es nul mais ca fonctionne";

    return 0;
}



En effet lorsque ce programme s'execute, il ne prend pas en compte la structure "else" et m'affiche le "Bien joue ca fonctionne" dans tout les cas

3 réponses

overcode Messages postés 119 Date d'inscription jeudi 6 décembre 2007 Statut Membre Dernière intervention 21 octobre 2011 27
22 sept. 2010 à 20:32
Salut,

Il y a bien quelques boulettes sur ton programme. Il compile, mais ne fait absolument pas ce que tu désires faire.

Si tu n'as pas encore eu vent des "string" (le type C++ qui désigne les objets chaîne de caractères), voilà une proposition :

# include <iostream>
# include <cstring>

using namespace std ;

int main()
{
    char entree[20] ; // tableau de caractères pour stocker l'entrée de l'utilisateur
    char mdp[20] = "cytrox" ; // le mot de passe auquel sera comparée l'entrée

    cout << "Mot de passe : " ;
    cin >> entree ;

    if( strcmp(entree,mdp) != 0 )
        cout << "Mot de passe incorrect. Dégage d'ici !" << endl ;
    else
        cout << "OK, mot de passe accepté. Bienvenue !" << endl ;
 
    return 0 ;
}


Attention : Le mot de passe ne doit pas contenir d'espace et ne peux faire que 19 caractères au maximum.

Sinon, avec les strings :

# include <iostream>
# include <string>

using namespace std ;

int main()
{
    string  entree ;
    string  mdp = "cytrox" ;

    cout << "Mot de passe : " ;
    getline(cin, entree) ;

    if( entree != mdp )
        cout << "Mot de passe incorrect. Dégage d'ici !" << endl ;
    else
        cout << "OK, mot de passe accepté. Bienvenue !" << endl ;
 
    return 0 ;
}


Note : cette fois pas limitation de taille. Le premier programme est vraiment une plaie (risque de buffer overflow).

J'espère au moins que c'est bien ce que tu voulais faire :)
1
Oh he bien parfait c'est ça oui
Mais un prof incompétent ça ne fait pas de miracle...

Merci beaucoup en tout cas, je me demandais pourquoi celà ne fonctionnait pas avec les lettres mais que celà fonctionnait avec les chiffres

Merci bien :)
0
overcode Messages postés 119 Date d'inscription jeudi 6 décembre 2007 Statut Membre Dernière intervention 21 octobre 2011 27
Modifié par overcode le 22/09/2010 à 20:53
Ok :) de rien
0