javascool53
Messages postés3Date d'inscriptionlundi 21 octobre 2013StatutMembreDernière intervention21 octobre 2013
-
Modifié par pijaku le 13/02/2014 à 09:11
javascool53
Messages postés3Date d'inscriptionlundi 21 octobre 2013StatutMembreDernière intervention21 octobre 2013
-
21 oct. 2013 à 19:43
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é !!!"); }
jordane45
Messages postés37274Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention24 mars 2023341 21 oct. 2013 à 15:33
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
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);
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
javascool53
Messages postés3Date d'inscriptionlundi 21 octobre 2013StatutMembreDernière intervention21 octobre 2013 21 oct. 2013 à 19:43
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