Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 13 sur 13
  1. #1

    Homme Profil pro
    Lycéen
    Inscrit en
    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;
      ...

  2. #2
    Membre éprouvé
    Femme Profil pro
    Développeur Java
    Inscrit en
    décembre 2009
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : décembre 2009
    Messages : 237
    Points : 484
    Points
    484

    Par défaut

    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?

  3. #3
    Membre éprouvé Avatar de Bayard
    Inscrit en
    juin 2002
    Messages
    676
    Détails du profil
    Informations forums :
    Inscription : juin 2002
    Messages : 676
    Points : 472
    Points
    472

    Par défaut

    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.

  4. #4
    Expert Confirmé Sénior
    Inscrit en
    août 2006
    Messages
    3 561
    Détails du profil
    Informations forums :
    Inscription : août 2006
    Messages : 3 561
    Points : 4 569
    Points
    4 569

    Par défaut

    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.

  5. #5
    Nouveau Membre du Club
    Homme Profil pro
    Inscrit en
    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 : 27
    Points
    27

    Par défaut

    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

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2011
    Messages
    264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : mai 2011
    Messages : 264
    Points : 448
    Points
    448

    Par défaut

    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

  7. #7
    Membre habitué
    Homme Profil pro Allan
    Étudiant
    Inscrit en
    août 2012
    Messages
    82
    Détails du profil
    Informations personnelles :
    Nom : Homme Allan
    Âge : 24
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : août 2012
    Messages : 82
    Points : 131
    Points
    131

    Par défaut

    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.

  8. #8
    Expert Confirmé Sénior Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    septembre 2005
    Messages
    24 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France

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

    Informations forums :
    Inscription : septembre 2005
    Messages : 24 128
    Points : 35 209
    Points
    35 209

    Par défaut

    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.

  9. #9

    Homme Profil pro
    Lycéen
    Inscrit en
    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 ?

  10. #10
    Membre habitué
    Homme Profil pro Allan
    Étudiant
    Inscrit en
    août 2012
    Messages
    82
    Détails du profil
    Informations personnelles :
    Nom : Homme Allan
    Âge : 24
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : août 2012
    Messages : 82
    Points : 131
    Points
    131

    Par défaut

    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...

  11. #11
    Membre éprouvé
    Femme Profil pro
    Développeur Java
    Inscrit en
    décembre 2009
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : décembre 2009
    Messages : 237
    Points : 484
    Points
    484

    Par défaut

    Que fait la fonction aléa float?

  12. #12
    Membre éprouvé
    Femme Profil pro
    Développeur Java
    Inscrit en
    décembre 2009
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : décembre 2009
    Messages : 237
    Points : 484
    Points
    484

    Par défaut

    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

  13. #13

    Homme Profil pro
    Lycéen
    Inscrit en
    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

    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 !

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •