cs_criss
Messages postés28Date d'inscriptionvendredi 31 janvier 2003StatutMembreDernière intervention 6 avril 2003
-
13 févr. 2003 à 22:17
cs_criss
Messages postés28Date d'inscriptionvendredi 31 janvier 2003StatutMembreDernière intervention 6 avril 2003
-
4 mars 2003 à 20:34
comment faire pour réaliser un programme qui permet à l'utilisateur de deviner un nombre caché. L'ordinateur choisit un nombre aléatoire (un entier) entre 1 et 1000. Le joueur a le droit à un maximum de 10 essais pour deviner ce nombre caché. Pour chaque essai, l'ordinateur indique si le nombre entré par l'utilisateur est supérieur ou inférieur au nombre mystérieux ou s'il a bien deviné ce nombre. Si après 10 essais le joueur ne devine pas le bon nombre caché, on l'affiche et on affiche aussi un message lui souhaitant bonne chance à la prochaine partie. Le programme fonctionne tant que l'utilisateur décide de continuer
je declare nbreAlea, BORNE_SUP et BORNE_INF comme etant entiers et je sais que pour choisir un nombre au hasard jefais
cs_criss
Messages postés28Date d'inscriptionvendredi 31 janvier 2003StatutMembreDernière intervention 6 avril 20031 15 févr. 2003 à 03:31
merci JHelp, tjrs cordiale....
a vrai dire oui g un peu de mal, mais je m'y habitude non pas parceque je ne potasse pas assez mais c que je m'y met tout seul sans cours :approve) et j'avoue que c pas facile, mais j'en ai fais du chemin...
merci encore
ne fais pas ce que je dis, ne dis pas ce que je fais :)
JHelp
Messages postés261Date d'inscriptionjeudi 5 septembre 2002StatutMembreDernière intervention 6 octobre 200511 15 févr. 2003 à 05:13
A d'accord, si tu veux je peux t'apprendre. Je suis comme toi, j'ai appris à programmer tout seul, j'ai eu des cours bien des années aprés.
Je te donne un conseil pour bien programmer, il faut connaitre bien le sénario, ce que ton programme est censé faire. Et avancer en donnant de plus en plus de détail. Au départ on a en gros, on découpe en grosse tranche, puis on analyse chaque trcjnche, que l'on découpe en tranche, j'usqu'a obtenir l'algo.
Par exemple, pour ton probléme :
Au départ voici l'algo en gros :
1) On choisit au hazard une nombre
2) L'utilisateur saisie un nombre, selon le nombre saisie, on a trois actions possibles :
a) il est trop grand, alors on lui signale
b) il est trop petit, on lui signale
c) il a trouvé le bon nombre, dans ce cas il a gané
3) On recommence l'étape 2) 10 fois ou on arréte si l'utilisateur à gagné
4) Si l'utilisateur n'a pas trouver le nombre, on lui dit quel était le nombre à trouver
La partie 1), tu m'a signler que tu savias la faire, donc elle se suffit en elle même , pas besoin de la décortiquer plus en détail
L'étape 2), peute être décomposée ainsi :
a) l'utilisateur saisie un nombre
b) on fait le test nombreSaisie > nombreMisterieux ?, si c'est vrai, alors c'est trop grand
c) sinon on fiat le test nombreSaisie <nombreMisterieux ?, si c'est vrai, alors c'est trop petit
d) sinon, on est sur que nombreSaisie == nombreMisterieux, car il n'est ni trop grand, ni trop petit, cequi implique que l'on a trouvé le nombre
L'étape 3) On voit que l'on repéte l'étape 2), il s'agit donc d'une boucle autour de 2). Répéte t-on un certain nombre de fois déterminé, oui, mais au peut arreter la boucle avant la fin, cas on a trouvé le nombre. Donc ce n'est par un for. Il reste donc tant-que ou repeter. On veut que l'étape 2) soit executée au moins une fois, il s'agit donc d'un repeter
Pour l'étape 4), il suffit juste de tester si ça été trouver ou non. Si on a pas trouver alors on fait un affichage en conséquence
On remarque une chose, c'est que la notion que l'utilisateur est trouver ou non le nombre misterieux influence le comportement de l'étape 2), 3) et 4), il leur faut donc une variable déclaré avant l'étape 2), qu'il changeront ou testerons. Soit on a trouvé le nombre, soit non, cette variable est donc un booléen. On l'appel aTrouver, pour lui donné un nom significatif, au départ on a pas trouvé le nombre, elle est donc mise à faux.
Elle change de valeur dans de 2)d)
Elle est tester en 3) et en 4)
Ensuite, on en déduite l'algo que je t'ai donné
Voilà, j'espére t'avoir montrer comment on peut raisonenr.
cs_criss
Messages postés28Date d'inscriptionvendredi 31 janvier 2003StatutMembreDernière intervention 6 avril 20031 4 mars 2003 à 20:34
voila le travail que g faites sur ca, j'en suis un peu fier :big) , a noter qu'ont utilise une classe nomme Utile.java( rien a voire avec Java.Util) elle permet la lecture au clavier des entiers et carcateres au lieu de tjrs mettre le buffer...
public static void main(String[] args) throws IOException{
// le nombre d'essais permi
int nbEssais;
// Le nombre entré par le joueur
int nbUtilisateur;
// Nombre généré aléatoirement par l'ordinateur
int nbOrdinateur;
// caractère permettant le choix final
char carac ;
// constantes permettant de limiter le choix par l'ordinateurfinal double BORNE_INF 1, BORNE_SUP 1000;
// Le nombre maximum de coups
int nbMaxDeCoups = 10; // Methode pour permettre de refaire ou de quitter, boucle do while
do
{
// Initialiser le nombre d'essais a 1
nbEssais = 1;
// Afficher la règle du jeu
System.out.println( " J'ai choisi un nombre entre 1 et 1000. Trouvez le en 10 essais ! ");
// Methode permettant de choisir un nombre aléatoirenbOrdinateur = ( int ) ((BORNE_SUP - BORNE_INF +1 ) * Math.random() + BORNE_INF);
// Saisir le nombre choisit par l'utilisateur
nbUtilisateur = Utile.lireEntier(" Entrez un nombre: ");
// Tant que l'utilisateur n'a pas trouvé le nombre
while ((nbUtilisateur < nbOrdinateur || nbUtilisateur > nbOrdinateur) && nbEssais < nbMaxDeCoups ) {
if ( nbUtilisateur < nbOrdinateur )
System.out.println ( " Essai #" + nbEssais + " Le nombre choisi est trop petit: ");
else
System.out.println(" Essai #" + nbEssais + " Le nombre choisi est trop grand: ");
// Saisir le nombre choisit par l'utilisateur
nbUtilisateur = Utile.lireEntier(" Entrez un nombre: ");
nbEssais ++ ; }
if ( nbEssais == nbMaxDeCoups ){
// verifier si le 10eme essai ne soit le bon ou pas
if ( nbUtilisateur == nbOrdinateur)
System.out.println ("Bravo vous avez trouvé le nombre" + nbOrdinateur
+ " aprés " + nbEssais +" essai(s)");
else
System.out.println(" Désolé vous avez épuisez votre nombre d'essais ");
}
else
// Afficher un message de félicitation
System.out.println ("Bravo vous avez trouvé le nombre " + nbOrdinateur
+ " aprés " + nbEssais +" essai(s)");
System.out.print("\n\n\t\tVoulez vous recommencer(o/n)?\t ");
carac = Utile.lireCaractere("");
carac= Character.toUpperCase(carac);
}while (carac =='O' );
if ( carac == 'N')
System.out.println(" Au revoir! ");
}
et je trouve que ca marche bien, ok je c que g pas traite les erreures g suppose que l'ont entre un nombre lorsque l'ont le demande et un caractere sur demande aussi
ne fais pas ce que je dis, ne dis pas ce que je fais :)
JHelp
Messages postés261Date d'inscriptionjeudi 5 septembre 2002StatutMembreDernière intervention 6 octobre 200511 13 févr. 2003 à 23:49
Et bien je te donne l'algo, à toi de le mettre en Java.
nombreMisterieux <-- choix du nombre
nbChoixEffectue <-- 0
aTrouver <-- Faux
Repeter
| affichage d'annonce (ch'ais pas par exemple, il vous reste x essais pour trouver le nombre)
| poposition <-- saisie d'un nombre
| Si proposition > nombreMisterieux Alors
| | affichacha trop grand
| sinon si proposition <nombreMisterieux Alors
| | affichage trop petit
| sinon
| | affichage bravo
| | aTrouver <-- Vrai
| Fin Si
| nbChoixEffectue <-- nbChoixEffectue
Jusqu'a nbChoixEfectue >= 10 OU aTrouver
Si NON(aTrouver)
| affichage le nombre à trouver était nombreMisterieux
Fin-Si
Voilà.
Mais si tu as du mal sur ce genre d'algo, je te conseil de repotasser tes cours. C'est comme même un niveau de tré trés débutant en progrmation.