Prob programmation en C

Fermé
exelo316 Messages postés 41 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 26 janvier 2010 - 11 oct. 2009 à 00:40
 loupius - 11 oct. 2009 à 15:35
Bonjour,alors voila: je fais du code en c (un pierre feuille ciseaux). je demande à l'utilisateur de rentrer un nombre entre 1 et 3 pour choisir la feuille, la pierre, etc. Mais si il rentre 0 (ou un autre nombre), le prog continue! Z'avez pas une solution pour terminer le prog svp? Merci
A voir également:

7 réponses

kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
11 oct. 2009 à 00:48
Yo!

Tout dépend du code, tu veux pas le poster?
0
montre nous ton code pour que l'on puisse t'aider.
0
exelo316 Messages postés 41 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 26 janvier 2010 30
11 oct. 2009 à 12:10
ok merci les gars, mais mes problèmes ont changé (j'éspère que vous pourrez toujours m'aider) je poste la question qu j'ai posée sur un autre forum:



J'ai essayé de créer un jeu pierre-feuille-ciseaux, cependant, bien que la compilation fonctionne, je me heurte à plusieurs problèmes.
int problème_1 (lol) L'IA, bien qu'elle soit gérée aléatoirement, quand je lui demande un nombre entre 1 et 3, me renvoie toujours 1.
Deuxème problème : la feuille est représentée par le nombre 1, les ciseaux par le 2, et la pierre par le 3. Dans mon jeu, pierre est plus fort que ciseaux (normal), ciseaux est plus fort que feuille, mais pierre est plus fort que feuille! :colere2:
troisième problème: le jeu est censé s'arrêter quand un des joueurs a gagné trois manches, mais ce n'est pas le cas! ma boucle est;
while (scoreJ<3 || scoreO<3), scoreJ étant le score du joueur et scoreO, celui de l'ordi. Je vous remercie d'avance et vous poste illico mon code source (licence libre, faites-en ce que vous voulez ;) ) :


#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(int argc, char *argv[])
{
//Déclarations
int objetchJ=0;
int objetchO=0;
const int MIN=1, MAX=3;
int count=0;
int scoreJ=0;
int scoreO=0;
//Prog
//Choix ordi
srand(time(NULL));
objetchO = (rand() % (MAX - MIN + 1)) + MIN;
//Boucle
while (scoreJ<3 || scoreO<3)
{
//incrémentation
count++;
//Intro
printf("\t\tPIERRE-FEUILLE-CISEAUX\n\t\tManche n°%d\n\n", count);
printf("Tapez 1 pour choisir la feuille, 2 pour choisir les ciseaux, et 3 pour choisir \nla pierre.\n");
//Choix joueur
scanf("%d", &objetchJ);
//Affichage du choix du joueur
switch (objetchJ)
{
case 1:
printf("Vous avez choisi la feuille.\n");
break;
case 2:
printf("Vous avez choisi les ciseaux.\n");
break;
case 3:
printf("Vous avez choisi la pierre.\n");
break;
default :
printf("Vous n'avez rien choisi.\n");
objetchJ=0;
break;
}
// Affichage du choix de l'ordi
switch (objetchO)
{
case 1:
printf("L'ordinateur a choisi la feuille.\n");
break;
case 2:
printf("L'ordinateur a choisi les ciseaux.\n");
break;
case 3:
printf("L'ordinateur a choisi la pierre.\n");
break;
}
//Condition
if(objetchJ>objetchO)
{
printf("Vous avez battu l'ordinateur sur cette manche!\nVous marquez 1 point.\n");
scoreJ++;
}
else if(objetchJ<objetchO)
{
printf("L'ordinateur vous a battu sur cette manche!\nIl marque 1 point.\n");
scoreO++;
}
else
{
printf("Égalité!\nAucun point n'est marqué.\n");
}
}
printf("SCORE:\nOrdinateur: %d\tVous: %d", scoreO, scoreJ);
if(scoreJ<scoreO)
{
printf("Bravo, vous avez perdu !\n");
}
else if(scoreJ>scoreO)
{
printf("Félicitations, vous avez gagné !\n");
}
return 0;
}

MERCI D'AVANCE!
0
Encore un programme illisible !
De quoi décourager les 'pas trop courageux du dimanche matin' dont je dois faire partie !
Dommage, je suis certain que les erreurs étaient très faciles à trouver ;-)
Je te souhaite d'en trouver - au moins - un plus courageux que moi.
Salut.
0
Dora The Explorer Messages postés 2811 Date d'inscription mardi 4 septembre 2007 Statut Contributeur Dernière intervention 1 septembre 2011 853
11 oct. 2009 à 13:41
En mettant un return 0; dans ledefault de ton switch?

Faut vraiment que je m'y remette moi :(

EDIT: j'ai survolé donc voilà j'ai ptet rien dit hein ;p
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
exelo316 Messages postés 41 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 26 janvier 2010 30
11 oct. 2009 à 13:42
Si il est illisible, indiquez moi comment le rendre plus facile à comprendre. Me fait-on grief d'un manque de commentaires ? J'attends vos réponses ! Le seul problème qui subsiste est que la boucle continue de tourner même si la condition n'est plus vérifiée. Pouvez-vous m'aider?
Boucle:
while (scoreJ<3 || scoreO<3)
0
troisième problème: le jeu est censé s'arrêter quand un des joueurs a gagné trois manches, mais ce n'est pas le cas! Ma boucle est: while (scoreJ<3 || scoreO<3)
Si ce n'est pas le cas c'est que la condition de la boucle est mal posée. Je propose de remplacer || par &&.
Bonne journée.
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
11 oct. 2009 à 13:48
Exelo, est ce que tu pourrais reposter ton code en utilisant les balises code s'il te plait?

Parce que c'est vrai que pour nous c'est vraiment pas lisible.
Les balises code conservent l'indentation.

Par exemple si je poste le code suivant avec des tabulations:

if (a != 1) {
if (a != 2) {
if (a != 3) {
printf("prout");
}
}
}

Eh bien il perd les tabulations.
En revanche entre les balises
<code>
</code>:
if (a != 1) {
    if (a != 2) {
        if (a != 3) {
             printf("prout");
        }
    }
}

Les tabulations sont conservées.
0
On devrait garder ta réponse comme exemple.
Bonne journée.
0
exelo316 Messages postés 41 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 26 janvier 2010 30
11 oct. 2009 à 15:30
le truc c'est que le code, je le tape comme ca....=S
0