Nombre mystère

Signaler
Messages postés
3
Date d'inscription
lundi 21 octobre 2013
Statut
Membre
Dernière intervention
21 octobre 2013
-
Messages postés
3
Date d'inscription
lundi 21 octobre 2013
Statut
Membre
Dernière intervention
21 octobre 2013
-
Bonjour,
Le jeu consiste à réaliser un programme qui inverse les rôles : c'est l'ordinateur qui trouve le nombre pensé par l'utilisateur
L'utilisateur choisi un nombre et l'ordinateur cherche ce nombre en tenant compte des réponses de l'utilisateur.

j'ai finis cet algorithme , mais j'aimerais l'améliorer en ajoutant une fonction qui vise à optimiser les réponses proposées par l'ordinateur ( en dehors du programme principal )
par exemple : j'ai en tête 245
l'ordinateur me propose : 500 --> trop grand
et je voudrais qu'il me propose 250 ( 500 / 2 ) [ intervalle 1;100 ]

merci

// Programme principal 
void main() {
int nsup =1000;
int ninf =1;
int nbre = random(1, 1000);
println("le nombre est-il égal(1) , inférieur(2) ou supérieur(3) à : " + nbre);
int n = readInteger();
while (n !=1) {
if (n == 2) {
println(" Le nombre est inférieur");
nsup = nbre;
nbre = random(ninf, nsup);
} else if (n == 3) {
println(" Le nombre est supérieur ");
ninf = nbre;
nbre = random(ninf, nsup);
}
println("le nombre est-il égal(1) , inférieur(2) ou supérieur(3) à : " + nbre);
n = readInteger();
}
println(" Vous avez gagné !!!");
}
A voir également:

4 réponses

Messages postés
34172
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 novembre 2021
357
Bonjour,

1 - Lorsque l'on poste du code, il serait bien d'utiliser la coloration Syntaxique ( première icone en partant de la droite lorsque tu rédiges un message)
Ceci est du code !!



mais j'aimerais l'améliorer en ajoutant une fonction qui vise à optimiser les réponses proposées par l'ordinateur
2 - Et donc quel souci rencontres-tu ?



Messages postés
3
Date d'inscription
lundi 21 octobre 2013
Statut
Membre
Dernière intervention
21 octobre 2013

Bonjour,
excusez moi je ne vois pas ce que vous vous voulez dire par : " il serait bien d'utiliser la coloration Syntaxique"

Je débute tout juste la programmation

Je ne sais pas comment m'y prendre pour mettre en place la fonction
Je n'ai qu'une ébauche non concluante :


// Fonction permettant d'optimiser les propositions du programme
int n() {
print("Entrez un nombre : ");
int n = readInteger();
int moy(int nsup, int ninf) {
((nsup - ninf) /2);

}






Merci , cordialement ..
Messages postés
34172
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 novembre 2021
357
Bonjour,
excusez moi je ne vois pas ce que vous vous voulez dire par : " il serait bien d'utiliser la coloration Syntaxique"

Tout simplement utiliser la mise en forme du code tel que je vous l'ai montré dans mon exemple...
COLLER LE CODE ICI !

en utilisant ce petit bouton ..


Pour ce qui est de votre question.. j'ai toujours un peu de mal à comprendre le souci rencontré...
J'imagine que vous souhaitez que l'ordinateur vous propose une valeur (calculée par rapport à sa proposition précédente) au lieu de proposer un nombre "aléatoire" ???
Si c'est bien ça, il faut, à partir de la seconde proposition faite par le PC, ne plus utiliser le Random mais la fonction effectuant le calcul voulu..

while (n !=1) { 
if (n == 2) {
println(" Le nombre est inférieur");

nsup = nbre;

nbre = random(ninf, nsup);

} else if (n == 3) {

println(" Le nombre est supérieur ");

ninf = nbre;

nbre = random(ninf, nsup);

}

println("le nombre est-il égal(1) , inférieur(2) ou supérieur(3) à : " + nbre);

n = readInteger();
}


Donc ici, à la place des lignes :
nbre = random(ninf, nsup);
mettre votre fonction.


Pour info (rien à voir avec le souci rencontré) : Ce type de recherche se nomme : dichotomie


Cordialement,
Jordane
Messages postés
3
Date d'inscription
lundi 21 octobre 2013
Statut
Membre
Dernière intervention
21 octobre 2013

D'accord merci pour l'info
Oui c'est bien ça : "calculée par rapport à sa proposition précédente au lieu de proposer un nombre "aléatoire" "



// Fonction permettant d'optimiser les propositions du programme
int moy(int nsup, int ninf) {
int nbre = ((nsup - ninf) /2);
return nbre;
}

// Programme principal
void main() {
int nsup =1000;
int ninf =1;
int nbre = random(1, 1000);
println("le nombre est-il égal(1) , inférieur(2) ou supérieur(3) à : " + nbre);
int n = readInteger();
while (n !=1) {
if (n == 2) {
println(" Le nombre est inférieur");
nsup = nbre;
nbre = moy(ninf, nsup);
} else if (n == 3) {
println(" Le nombre est supérieur ");
ninf = nbre;
nbre = moy(ninf, nsup);
}
println("le nombre est-il égal(1) , inférieur(2) ou supérieur(3) à : " + nbre);
n = readInteger();
println(" Vous avez gagné !!!");
}



J'ai séparé la fonction du programme principal
mais j'ai une erreur dans mon programme car il me propose un nombre négatif
Voilà , je ne sais pas comment programmer pour arriver à optimiser ma recherche par dichotomie
Merci