XOR C++

Ma solution vs celle donnée

a marqué ce sujet comme résolu.

Bonjour !
Je viens de faire l’exercice XOR en C++ (chapitre sur les conditions) et voilà la solution que j’ai trouvé :

#include <iostream>
#include <locale>

void entree_securisee(); // For secured entry TP

int main() {
    setlocale(LC_ALL, ""); // Handle accents

    std::cout << std::boolalpha; // Make bool appear as true/false instead of 0/1

    // Variables
    bool a{ true };
    bool b{ true };
    bool x{};

    // XOR
    if (a != b) {
        x = true;
    }
    else {
        x = false;
    }
    
    std::cout << x << std::endl; // Print final result

    return 0;
}

Or, la solution donnée dans le cours est celle-ci :

#include <iostream>

int main()
{
    std::cout << std::boolalpha;

    bool const deux_false { (false && !false) || (false && !false) };
    std::cout << "(false && !false) || (false && !false) == " << deux_false << std::endl;

    bool const true_false { (true && !false) || (false && !true) };
    std::cout << "(true && !false) || (false && !true) == " << true_false << std::endl;

    bool const false_true { (false && !true) || (true && !false) };
    std::cout << "(false && !true) || (true && !false) == " << false_true << std::endl;

    bool const deux_true { (true && !true) || (true && !true) };
    std::cout << "(true && !true) || (true && !true) == " << deux_true << std::endl;
    
    return 0;
}

Je me demande donc laquelle des deux est meilleure, étant donné que je trouve la mienne plus simple/lisible mais que j’imagine qu’il y a une raison d’avoir donné une solution plus complexe dans le cours.

Bonjour @Gusali.

Tout d’abord, note que l’exemple que tu montre n’est que le programme de vérification et que la solution donnée est (a && !b) || (b && !a). :)

Ensuite, sache que ta solution est tout à fait correcte et, comme très souvent, il n’y a pas qu’une seule bonne façon de faire. Nous avons choisi à l’époque une autre façon de faire pour être le plus explicite possible, mais ta solution aussi est claire.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte