A voir également:
- C++ mastermind erreur (code joint)
- Code erreur s05-05 - Forum Téléviseurs
- Code erreur 80072efe windows 7 ✓ - Forum Windows 7
- Code asci - Guide
- Code 80072efe ✓ - Forum Windows
- Freewifi secure code ✓ - Forum Réseau
3 réponses
mamiemando
Messages postés
32283
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
17 mars 2023
7 572
10 juin 2006 à 11:44
10 juin 2006 à 11:44
Oui c'est normal tu as mis partout dans tes conditions :
Ce que signifie que tu affectes solution1 à "a". Comme cette valeur est a priori non nulle, le test est a priori toujours vérifié. Il faut que tu mettes :
Bonne chance
if(a=solution1)
Ce que signifie que tu affectes solution1 à "a". Comme cette valeur est a priori non nulle, le test est a priori toujours vérifié. Il faut que tu mettes :
if(a==solution1)
Bonne chance
mamiemando
Messages postés
32283
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
17 mars 2023
7 572
10 juin 2006 à 11:59
10 juin 2006 à 11:59
Dans un souçis de lisibilité et de généricité de ton code, il pourrait être intéressant de commencer à faire des jolies fonctions afin d'améliorer le code. On pourrait par exemple imaginer faire un mastermind à n cases et p couleurs. En supposant que tu stockes une solution dans un std::vector :
Je te donne le debut, à toi de finir si le coeur t'en dit ;)
Bonne chance
Je te donne le debut, à toi de finir si le coeur t'en dit ;)
#include <vector>
#include <cassert>
#include <iostream>
typedef std::vector<unsigned int> solution_t;
unsigned int randint(unsigned int max){
//...
}
void generer_code(
solution_t & solution,
unsigned int nb_couleur,
unsigned int nb_cases
){
solution = solution_t(nb_cases);
for(unsigned int i=0;i<nb_cases;++i){
solution[i] = randint(nb_couleur);
}
}
void show_solution(const solution_t & sol){
for(unsigned int i=0;i<sol.size();++i){
std::cout << sol[i] << ' ';
}
std::cout << std::endl;
}
void read_proposition(
solution_t & prop
){
//Lire sur std::cin la proposition
}
unsigned int get_nb_valid(
const solution_t & solution,
const solution_t & proposition
){
unsigned int nb_valid=0,i;
assert(solution.size()==proposition.size())
for(std::size_t i=0;i<solution.size();++i){
if (solution[i]==proposition[i]){
std::cout << i << "eme nombre correct" << std::endl;
++nb_valid;
}
}
return nb_valid;
}
unsigned int get_nb_mal_place(
const solution_t & solution,
const solution_t & proposition
){
unsigned int nb_mal_place=0,i;
assert(solution.size()==proposition.size())
for(std::size_t i=0;i<solution.size();++i){
if (solution[i]!=proposition[i]){
for(std::size_t j=0;j<solution.size();++j){
if (i!=j && solution[i]==proposition[j]){
++nb_mal_place;
break;
}
}
}
}
return nb_mal_place;
}
int main(){
solution_t sol;
solution_t prop;
generer_code(sol,8,4);
unsigned int nb_essai=5,nb_valid,nb_mal_place;
bool gagne = false;
for(unsigned int i=1;i<=nb_essai && !gagne;++i){
std::cout << "Essai (" << i << '/' <<nb_essai << ')' << std::endl;
//Lire le code proposé et le mettre dans prop
//....
//Comparer la proposition à la solution
nb_valid = get_nb_valid(sol,prop);
if (nb_valid == sol.size()){
gagne = true;
}
std::cout << nb_valid << " nombres sont valides" << std::endl;
nb_mal_place = get_nb_mal_place(sol,prop);
}
if (gagne) std::cout << "Gagné !" << std::endl;
else{
std::cout << "Perdu :( La solution était " << std::endl;
show_solution(sol);
}
return 0;
}
Bonne chance