1er joueur Niquel 2nd ... en boucle :/ [c] - C - Programmation
Marsh Posté le 24-05-2010 à 23:25:51
Au juste je ne l'ai pas encore totalement terminé !!! ^^ mais ce problème m'enerve en plus je pense que je l'avais déjà eu la première fois ou je l'avais fait ::
Marsh Posté le 25-05-2010 à 00:35:14
Remplaces ton test par: (Nombre1 != nombreMysteres && Nombre2 != nombreMysteres) car la, ton test ne s'arrête que quand nombre1 et nombre2 sont égaux au nombre mystère.
A+,
Marsh Posté le 25-05-2010 à 09:28:12
MERCI gilou effectivement ca marche, j'avais déjà testé mais j'avais fermer la boucle du sommaire trop tot donc cela ne marcher pas.
Par contre ce que je ne comprends pas c'est justement pourquoi cela marche avec && ( qui pour moi veux dire qu'il faut que les nomnbre 1 et 2 soit égaux aux nombres mystere pour sortir de la boucle.
alors qu'avec || je comprends qu'il faut ou que le nombre 1 soir egal au nombre mystere pour sortir de la boucle ou le nombre 2 ce qui me semblais plus logique
Quelqu'un pourrais m'expliquer car à ce que je vois j'ai compris de travers !!xd
Marsh Posté le 25-05-2010 à 11:11:19
Avec le || tu effectues la boucle tant que Nombre1 est différent de NombreMystere OU Nombre2 est différent de NombreMystere.
Si Nombre1 est égal à NombreMystere et Nombre2 est différent de nombre mystere on a la condition qui devient ( Nombre1 != nombreMystere (FAUX) || Nombre2 != nombreMystere (VRAI) donc ta condition est toujours respectée => la boucle continue
Avec le && le raisonnement serait : tu veux continuer la boucle tant que Nombre1 et Nombre2 sont différent du NombreMystere
[EDIT] En fait mentalement on a tendance a faire l'inverse :
Dur dur à expliquer clairement, je sais pas si c'est compréhensible
Marsh Posté le 25-05-2010 à 12:01:43
aaaaaaaaa Oui effectivement je n'ai pas compris à la première lecture mais en réfléchissant un petit peu j'ai compris ^^
d'accord Merci pour cette petite explication tout s'éclaircit ^^
PS: j'ai une autre demande concernant un autre programme , je n'irai pas jusqu'à la mais pour effectivement une division et avoir le nombreexact je veux dire par la que 10/3 = 3.33 et non 3.000
donc voila je vous donne une ébauche du programme:
Code :
|
sachant que res est de type double
N1 et N2 de type int!!
et si je met N1 et N2 en type double .... ca me sort de l'hexa xd
je sais que la Division modulo donne le reste c'est a dire 1 mais .... je sais qu'il y à une solution XD lol
Marsh Posté le 25-05-2010 à 14:50:05
swixmix a écrit : MERCI gilou effectivement ca marche, j'avais déjà testé mais j'avais fermer la boucle du sommaire trop tot donc cela ne marcher pas. |
Ce que tu veux a la base, c'est qu'on s'arrete quand un des deux nombres est le nombre mystere. Donc on s'arrête pour la condition suivante:
((Nombre1 == nombreMysteres) || (Nombre2 == nombreMysteres))
Donc on prend la négation de ça pour la condition de boucle (puisque c'est la condition pour que ça s'arrête pas):
(!((Nombre1 == nombreMysteres) || (Nombre2 == nombreMysteres)))
On distribue la négation en appliquant la formule élémentaire (non (A ou B)) <=> ((non A) et (non B))
Ça donne ici
((!(Nombre1 == nombreMysteres)) && (!(Nombre2 == nombreMysteres)))
Maintenant on applique (non (A == B)) <=> (A != B)
Ça donne ici
((Nombre1 != nombreMysteres) && (Nombre2 != nombreMysteres))
Voilou.
A+,
Marsh Posté le 25-05-2010 à 14:59:45
Citation : res = N1 / N2; |
au vu du code ca devrait être nombre1 et nombre2, pas N1 et N2. Et il suffit de faire res = (double) nombre1/ (double) nombre2;
A+,
Marsh Posté le 25-05-2010 à 15:52:11
gilou---> la j'avoue c'est moi qui avais la tête en l'air car j'avais déclaré N1 et N2 en double mais je ne les avaient pas mis dans scanf XD !!!^^
merci
ps: en tout cas tu m'as appris une chose car je savais pas qu'on pouvais changer le type d'une variable une fois qu'elle à été déclaré ^^ (je fais référence à: (double) nombre1/ (double) nombre2; )
et pour l'explication pour les opérateurs logiques^^ tu m'as fais une révision car je me souviens que j'aavais lu exactement les mêmes explication il y à quelques mois XD merci^^
Marsh Posté le 25-05-2010 à 15:55:34
Petite question concernant le premier programme du jeu de hasard je compte le modifié en faisant appel a des fonctions donc je compte creer 5 fonctions:
3 différentes (1 pour chaque niveau)
et 2 autres pour le mode 1 et 2 joueurs ^^ j'espère que je me trompe pas ^^ normalement je ne penses pas avoir de problème mais sais ont jamais !!^^
Marsh Posté le 25-05-2010 à 19:08:40
Un peu trop compliqué, ça, il y a moyen de simplifier.
En particulier, le niveau ne compte qu'a l'initialisation du jeu.
Un exemple codé rapidement à partir de ton code, qui n'utilise qu'une fonction quelque soit le nb de joueurs et le niveau, findNb, car en fait, ce qui compte, c'est de savoir si on a trouvé le nb ou pas. Cet exemple est pas parfait (scanf, c'est pas ce qu'il faut utiliser pour un input utilisateur, car ca suppose un utilisateur parfait, qui va jamais taper d'input erronné), mais ça devrait te donner des idées. Notes que la, si queryNbJoueurs accepte une valeur plus grande que 2 joueurs, le reste du code marchera aussi:
Code :
|
A+,
Marsh Posté le 26-05-2010 à 22:11:29
Ouahou !!! et bien ... merci gilou pour ce petit exemple qui m'es assez constructif mais pour ma part je n'ai pas encore vu les préprocesseur, les macros et les #define XD
Donc je comprends le principe et une partie du code (que j'ai survolé je l'avoue car je vais le regarder plus précisement ce soir ou demain) mais pour te dire qu'il y à certaines chose que je n'ai pas encore vu XD !!
ps: getchar () je le vois souvent mais ne le comprends pas très bien :S
Marsh Posté le 27-05-2010 à 15:59:02
sauf que je viensd e remarquer que votre programme ... indique le nombre mystère au joueur ^^ je me penche ce soir sur une solution adapté a mes capacitées ( bien que la prochaine choses que je vais voir sont les chaine de caractère et les préprocesseurs je veux y arriver sans ^^)
Marsh Posté le 27-05-2010 à 18:43:35
Faut lire, hein, l'affichage du nombre mystère, c'est en phase de test du programme:
Citation : #ifdef MISE_AU_POINT |
Il suffit de mettre #define MISE_AU_POINT en commentaire et de recompiler pour avoir le programme pour les joueurs, sans affichage du nombre mystère.
Pour faire l'équivalent sans préprocesseur, vous pouvez créer une variable globale (avant le main donc)
int debug = 1;
et remplacer ce qui est mis en quote par:
if (debug) {
printf("mystere=%d\n", *mystere);
}
et pour une version finale, vous mettez la valeur de debug à 0 et recompilez.
pour le getchar(); c'est équivalent a un system("Pause" ); mais ça marche qu'on soit sous windows ou pas.
A+,
Marsh Posté le 24-05-2010 à 23:23:06
Bonsoir,
Alors voila j'ai effectué un petit jeu de hasard avec Choix mode deux joueurs et choix de niveaux.
Bon avec Un seul joueur ca va niquel j'arrive a revenir au choix de départ une fois le jeux fini mais en mode deux joueurs .... Ca reviens pas et je comprends pas.
Les boucles sont strictements pareil seul la variable "max" change selon les niveau!!
PS en plus je l'avais déjà fais XD le problème c'est que le code source est rester sur un autre disque dur ... donc j'ai voulu le refaire (je ne l'ai pas fait de la même facon mais le résultat est le meme) et la ben je bloque car en mode 2 joueurs ca veux pas revenir
Merci a vous !!
PPS: si aussi vous pensez que je peux le faire en plus condensé dites le moi svp ! j'accepte toutes les critiques^^