Précédent   Forum du club des développeurs et IT Pro > C et C++ > C > Débuter
Débuter Forum d'entraide pour débuter en langage C. Avant de poster -> FAQ C
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 18/11/2012, 00h02   #1
BlackFireWhite
 
Homme
Lycéen
Inscription : novembre 2012
Messages : 3
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Lycéen

Informations forums :
Inscription : novembre 2012
Messages : 3
Points : -3
Points : -3
Par défaut Jeu permettant de deviner un nombre

Bonjour,
j' aurai besoin d' aide pour faire un programme en C sur lequel je bloque complètement Le Programme, c'est :

Concevoir un jeu, destiné à un enfant de CP-CE1, lui demandant, à chaque partie, de deviner un nombre entier N entre 1 et 50 choisi au hasard par l' ordinateur:
* Le jeu devra comporter 10 parties.
* Pour chaque partie, l' enfant disposera de 5 tentatives (au maximum) pour deviner le nombre N.
Dans une partie donnée, à chaque échec, on lui indiquera par un message adaptée:
- le nombre de tentatives restantes ;
- si le nombre qu' il a proposée est supérieur ou inférieur au nombre choisi par l' ordinateur.
* A la fin de chaque partie, on informera à l'enfant par un message adapté :
- du fait qu' il a perdu ou gagné la partie courante ;
- de son score provisoire sur 10 à l' issue de la partie courante.
* A l' issue des 10 parties, on indiquera à l' enfant par un message adapté que :
- son score est formidable s' il est de 10/10 ,
- son score est convenable s' il est situé entre 5 et 9 au sens large ,
- son score n' est pas fameux s' il est est inférieur à 5 ,
- que le jeu est terminé .

Indications :
* On mettra à votre disposition une fonction alea_int (n) qui fournira un entier aléatoire en 0 et n-1
* On dispose en C, de la structure de l' instruction if-else if-else décrite ci-dessous :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if (condition_1)
  {
     instruction_1;
     instruction_2;
     ...
  }
  else if (condition_2)
  {
     instruction_3;
     instruction_4;
     ...
  }
  else
  {
     instruction_5;
     instruction_6;
  }
  instruction_7;
  ...
BlackFireWhite est déconnecté   Envoyer un message privé Réponse avec citation 04
Vieux 18/11/2012, 00h07   #2
Malinaka
Membre confirmé
 
Femme
Étudiant
Inscription : décembre 2009
Messages : 165
Détails du profil
Informations personnelles :
Sexe : Femme

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : décembre 2009
Messages : 165
Points : 287
Points : 287
Bonjour,

Bienvenu sur le forum.

Ce sujet est un sujet classique, alors pourrais tu préciser les points qui te posent soucis afin que nous te fournissions une aide, et pas une correction?
Malinaka est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/11/2012, 09h12   #3
Bayard
Membre éprouvé
 
Avatar de Bayard
 
Inscription : juin 2002
Messages : 667
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 667
Points : 415
Points : 415
Citation:
je bloque complètement
A part l'énoncé de votre problème, je ne vois pas ce que vous donnez: quel est le souci lié au langage c que vous avez ?
Postez votre code en le simplifiant avant de le poster et nous jetterons un oeil.
__________________
Si tu ne vis pas ce que tu penses alors tu penses ce que tu vis.
Bayard est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/11/2012, 15h21   #4
droggo
Expert Confirmé
 
Inscription : août 2006
Messages : 3 414
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 3 414
Points : 3 769
Points : 3 769
Joe,

De plus, c'est très clairement un exercice de cours, il faut donc nous expliquer ce qui te bloque, et nous monter ce que tu as déjà fait, comme rappelé par Bayard.
__________________
Il court en ce moment une espèce de grippe, mais elle ne court pas très vite, car on peut l'attraper sans courir.
droggo est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 22/11/2012, 15h41   #5
Tradul
Nouveau Membre du Club
 
Homme
Inscription : novembre 2012
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : novembre 2012
Messages : 16
Points : 25
Points : 25
Sans vouloir être mauvaise langue je pense qu'il veut une réponse toute faite à son problème, ce qui n'est pas l'objectif du fofo
Tradul est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2012, 20h54   #6
edgarjacobs
Membre éclairé
 
Homme
Développeur informatique
Inscription : mai 2011
Messages : 203
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 53
Localisation : Belgique

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : mai 2011
Messages : 203
Points : 319
Points : 319
Un petit pseudo-code?

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
score=0
erreur=0
Pour partie=1 jusqu à 10
 choisir un nombre nbr entre un 1 et 10 // Par l'ordinateur
 essai=1
 tant que essai <= nombre d essai max et que l enfant n a pas trouvé
  afficher le nombre d essais restants
  ntest=demander un nombre
  si ntest<nbr afficher le bon message
  sinon si ntest>nbr afficher le bon message
  sinon si ntest==nbr afficher le bon message, trouvé=vrai
  essai=essai-1
 fin tant que
 si le nombre n a pas été trouvé
  erreur=erreur+1
  afficher le bon message
 sinon 
  score=score+1
  afficher le bon message
 afficher le score (/10)
fin pour
afficher le bon message en fonction du score
edgarjacobs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2012, 11h09   #7
DrDarko
Membre habitué
 
Homme Allan
Étudiant
Inscription : août 2012
Messages : 82
Détails du profil
Informations personnelles :
Nom : Homme Allan
Âge : 23
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2012
Messages : 82
Points : 146
Points : 146
Je vais peut être rabâcher ce que tout le monde te dit mais sans code il n'y aura pas de réponse...

C'est une problématique assez simple ou tu as de la lecture de données avec analyse et retour de données, c'est juste à faire avec des boucles.

Du coup je te conseillerai de commencer par un tuto, car à mon avis tu n'es pas au top en C. Une fois les chapitres boucle et lecture de données lus (Tu peux lire les autres chapitres aussi ça ne fait pas de mal), tu reviens avec un code fonctionnel (je l'espère) et si il ne l'est pas la on t'aidera.
DrDarko est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/11/2012, 14h58   #8
Médinoc
Expert Confirmé Sénior
 
Avatar de Médinoc
 
Homme
Développeur informatique
Inscription : septembre 2005
Messages : 22 387
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2005
Messages : 22 387
Points : 32 028
Points : 32 028
Envoyer un message via MSN à Médinoc
Note:
  • En deux essais, on peut trouver un nombre de 1 à 3 (2**2-1) par recherche dichotomique (la méthode la plus évidente pour résoudre ce jeu).
  • En trois essais, on peut trouver un nombre de 1 à 7 (2**3-1) par recherche dichotomique.
  • En quatre essais, on peut trouver un nombre de 1 à 15 (2**4-1) par recherche dichotomique.
  • En cinq essais, on peut trouver un nombre de 1 à 31 (2**5-1) par recherche dichotomique.
Il n'y a aucune garantie de pouvoir trouver un nombre de 1 à 50 en cinq essais seulement. De telles règles pénalisent le joueur sans qu'il ait commis de faute. Il faut au autoriser au moins six essais, sinon le jeu devient un "test de chance" ---> poubelle, autant jouer directement aux dés.
__________________
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone.
-- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Médinoc est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/11/2012, 20h41   #9
BlackFireWhite
 
Homme
Lycéen
Inscription : novembre 2012
Messages : 3
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Lycéen

Informations forums :
Inscription : novembre 2012
Messages : 3
Points : -3
Points : -3
Par défaut Je pense l' avoir presque réussi ! Mais...

J' ai développé ça mais ça bloque quand même pourtant je pense pas m' être trompez !

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <stdio.h>
#include <math.h>
#include "stdlib.h"
 
float alea_float()
 
    int alea_int(int N) { return (int) (N*alea_float()); }
    int main()
    {
    int partie_qui_reste,note,choix,alea,x,y;
    note=0;
    for(y=1; y<=10; y++)
    {
    partie_qui_reste=4;
    alea=alea_int(50)+1;
    for(x=1; x<=5; x++)
    {
    printf("Trouve le Nombre Mystere compris entre 1 et 50: ");
    scanf("%d",&choix);
    if(choix==alea)
    {
    printf("Bravo !!\n");
    x=6;
    note=note+1;
    }
    else if(choix>alea)
    {
    printf("Le Nombre Mystere est plus petit !\n");
    printf("Il te reste %d tentative\n",partie_qui_reste);
    partie_qui_reste=partie_qui_reste-1;
    }
    else if(choix<alea)
    {
    printf("Le Nombre Mystere est plus grand !\n");
    printf("Il te reste %d tentative\n",partie_qui_reste);
    partie_qui_reste=partie_qui_reste-1;
    }
    if(x==5 && choix!=alea)
    {
    printf("Perdu ! Le Nombre Mystere etait %d ! ='[",alea);
    }
    }
    printf(" _ Ta Note pour l' instant est de %d / %d\n",note,y);
    }
    if(note==10)
    {
    printf("Formidable! O_O Einstein, Sors de ce corps!");
    }
    if(note>=5 && note<=9)
    {
    printf("Beau/Belle Gosse! ^^ C'est Convenable!");
    }
    if(note<5)
    {
    printf("C' est pas Fameux! -_-' J' espere que tu cuisines pas comme tu joues!");
    }
    printf(" Jeu Termine! A plus! Petit Joueur ;-]");
 
    return 0;
}
Vous pourriez m' aider ?
BlackFireWhite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2012, 04h10   #10
DrDarko
Membre habitué
 
Homme Allan
Étudiant
Inscription : août 2012
Messages : 82
Détails du profil
Informations personnelles :
Nom : Homme Allan
Âge : 23
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2012
Messages : 82
Points : 146
Points : 146
Citation:
Envoyé par BlackFireWhite Voir le message
J' ai développé ça mais ça bloque quand même pourtant je pense pas m' être trompez !
Dis nous ce qui bloque (les messages d'erreurs) et pas ça bloque!!!

Et regarde du coté de l'indentation...
DrDarko est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2012, 22h20   #11
Malinaka
Membre confirmé
 
Femme
Étudiant
Inscription : décembre 2009
Messages : 165
Détails du profil
Informations personnelles :
Sexe : Femme

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : décembre 2009
Messages : 165
Points : 287
Points : 287
Que fait la fonction aléa float?
Malinaka est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2012, 23h10   #12
Malinaka
Membre confirmé
 
Femme
Étudiant
Inscription : décembre 2009
Messages : 165
Détails du profil
Informations personnelles :
Sexe : Femme

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : décembre 2009
Messages : 165
Points : 287
Points : 287
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
 
#include <stdio.h>
#include <math.h>
#include <time.h>
#include "stdlib.h"
 
 
 
int partie ( ){
    int choix, note;
    int alea=rand() % 50+1;
    int x;
    note=0;
    for( x=1; x<=5; x++){
        printf("Trouve le Nombre Mystere compris entre 1 et 50: ");
        scanf("%d",&choix);
        if(choix==alea){
            printf("Bravo !!\n");
            x=6;
            note=note+1;
        }else if(choix>alea){
            printf("Le Nombre Mystere est plus petit !\n");
            printf("Il te reste %d tentative\n",5-x);
        }else if(choix<alea){
            printf("Le Nombre Mystere est plus grand !\n");
            printf("Il te reste %d tentative\n",5-x);
        }
        if(x==5 && choix!=alea){
            printf("Perdu ! Le Nombre Mystere etait %d ! ='[",alea);
        }
    }
    return note;
}
 
 
int main()
{
    int note,y;
    srand ( time(NULL) );
    note=0;
    for(y=1; y<=10; y++){
 
        note+=partie();
        printf(" _ Ta Note pour l' instant est de %d / %d\n",note,y);
    }
    switch(note){
        case 10 :
             printf("Formidable! O_O Einstein, Sors de ce corps!");
             break;
        case 9:
        case 8:
        case 7:
        case 6:
        case 5 :
             printf("Beau/Belle Gosse! ^^ C'est Convenable!");
             break;
        default:
             printf("C' est pas Fameux! -_-' J' espere que tu cuisines pas comme tu joues!");
 
    }
    printf(" Jeu Termine! A plus! Petit Joueur ;-]");
 
    return 0;
}
J'ai refactoré un peu le code pour ma compréhension mais tout cela n'est pas du tout optimisé: a toi de retravailler tout ca .
Pas de grande erreur, j'ai juste remplacé alea float par random de time.h.

Attention ceci n'est pas une correction: l'algo que tu as produit est juste, mais peut efficace
Malinaka est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 03/12/2012, 20h44   #13
BlackFireWhite
 
Homme
Lycéen
Inscription : novembre 2012
Messages : 3
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Lycéen

Informations forums :
Inscription : novembre 2012
Messages : 3
Points : -3
Points : -3
Merci à tous, j'ai retravailler mon programme
Et j'ai réussi ! Le problème était bien au niveau des fichiers de base inclus et des fonctions, je n'avais pas inséré la fonction Time, mais je l'ai fait et j'ai enfin réussi ! Si ça vous intéresse je peux vous montrer ce que j'ai fait ? Et puis désolé pour le peu d' indications que j' ai donné au début , mais vous m'avez aider quand même merci !
BlackFireWhite est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 01h16.


 
 
 
 
Partenaires

Hébergement Web