IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Programme pile ou face


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2011
    Messages : 4
    Par défaut Programme pile ou face
    Bonjour à tous,

    Je suis nouveau sur le forum, mais cela fais déjà un petit temps que je scrute le site pour toutes ces tonnes d'informations

    J'ai un travail a rendre en C, je l'ai terminer mais je voudrais savoir ce que vous pensez du code ? ce qu'il y aurait a revoir, modifier,...



    ENNONCE
    1/ créer une fonction pile ou face ( vrai ou faux )

    2/ creer une fonction qui recoit le nombre d'essais, un vecteur de tirage réalisé par l'ordinateur et un vecteur de proposition du joueur et, retourne le nombre de fois ou l'utilisateur a trouvé le bon résultat ( le nombre de succes)

    3/ecrire une fonction qui recoit le nombre d'essais, le vecteur de tirage et le vecteur de proposition, affiche l'ecran ci dessous et retourne le choix de l'utilisateur. ( c'est le menu qui est deja dans mon pgm ca )

    4/un programme principal qui gere les parties et affiche le resultat complet avant de demarrer une nouvelle partie ou de quitter le programme.

    Contraintes:

    -utiliser la pré-définition de toutes les constantes
    -utiliser le type de boucle le mieux adapté a chaque cas.
    -utiliser le type de variable le plus adéquat. ( optimiser l'espace memoire)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #include <time.h>
     
    // Fonction qui renvoie le nombre de succès du joueur
    int nbsucces (int essai , char ordi[] ,char joueur[])
    {
        int pourcent=0;
        int nbsucces=0;
        if(joueur==ordi)
        {
            printf("\n\t GAGNE\n");
            nbsucces=nbsucces+1;
        }
        else
        {
            printf("\n\t PERDU\n");
            nbsucces=nbsucces+0;
        }
        return nbsucces;
     
        pourcent=(nbsucces/essai)*100;
    }
     
    // Fonction rand qui génère aléatoirement un 1 ou un 0 pour créer respectivement un face ou un pile.
    char pileface (void)
    {
        int essai=0;
        char P , F;
        char joueur;
     
        printf("\n\t Pile ou Face");
        printf("\n\t P = pile et F = Face.\n");
        scanf("%d", &joueur);
        int j=0;
        do
        {
            if(joueur!=P || joueur!=F)
            {
                printf("\n\t P = pile et F = Face.\n");
                scanf("%d", &joueur);
            }
     
     
            srand(time(NULL));
            char ordi = rand() % 2;
            int i=0;
     
            if(ordi==0)
            {
                ordi= P;
                printf("La piece est tombee sur PILE.\n");
                }
            else
            {
                ordi= F;
                printf("La piece est tombee sur FACE.\n");
            }
            essai++;
        }
        while(j!=1);
    	int nbsucces (int essai , char ordi[] ,char joueur[]);
    }
     
    // Fonction pour l'affichage
    void affiche(int essai, char ordi[],char joueur[])
    {
        char choix , N , L , Q;
     
    	printf("\t \t Pile ou Face \n");
    	printf("\t \t ============ \n \n");
     
    	printf("Partie en cours : \n");
    	printf("\t Nombre d'essais : %d\n", essai);
    	printf("\t Pourcentage de reussite du joueur : %d\n", pourcent);
     
    	prtinf("Menu :\n");
    	printf("\t (N) \t Demarrer une Nouvelle partie\n");
    	printf("\t (L) \t Lancer La piece\n");
    	printf("\t (Q) \t Quitter\n");
    	printf("\t \t \t \t \t Choix ?\n");
    	scanf("%d",&choix);
     
        if(choix=N)
        {
     
        }
        if(choix=L)
        {
           char joueur (void);
        }
        if(choix=Q)
        {
            system('CLS');
        }
     
     
     
    }
     
    // Fonction qui gère les parties et affiche le résultat complet avant de
    // démarrer une nouvelle partie ou de quitter le prgramme.
    void afficheresultat (int essai, char ordi[], char joueur[])
    {
        printf("\t \t Pile ou Face \n");
    	printf("\t \t ============ \n \n");
     
        printf("Resultat de la derniere partie : ( P = Pils et F = Face)\n\n");
        printf("---------------------------------------------------------------------------\n");
        printf("|Tentative   |   1 |   2 |   3 |   4 |   5 |   6 |   7 |   8 |   9 |   10 |\n");
        printf("---------------------------------------------------------------------------\n");
        printf("|Tirage      |  %d |  %d |  %d |  %d |  %d |  %d |  %d |  %d |  %d |  %d  |\n", ordi);
        printf("|Proposition |  %d |  %d |  %d |  %d |  %d |  %d |  %d |  %d |  %d |  %d  |\n", joueur);
        printf("---------------------------------------------------------------------------\n\n");
     
     
     
    }
     
    int main()
    {
        printf("\n\n\n\t\t\t BIENVENU DANS LE JEU DU PILE OU FACE !!\n\n");
     
        void affiche(int essai, char ordi[],char joueur[]);
     
     
    }
    Un gd merci à vouss

  2. #2
    Membre Expert Avatar de fregolo52
    Homme Profil pro
    Développeur C
    Inscrit en
    Août 2004
    Messages
    2 366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Août 2004
    Messages : 2 366
    Par défaut
    Il y a plein (trop) d'erreurs !!

    Tu n'as pas de moyen de tester (compiler) ton code ?

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    Salut

    Il aurait fallu que tu tentes de compiler pour avoir un début de réponse. Mon compilateur m'a hurlé dessus.

    C'est impossible de tout corriger, il y a beaucoup trop d'incohérences.

    Quelques pistes, dans le désordre :

    Fonction "nbsucces" :
    _ Tu incrémentes "nbsucces" à chaque appel de la fonction. Or, cette variable est initialisée à 0 à chaque fois.
    _ Tu veux effectuer un calcul ("pourcent"), mais le résultat est perdu à la fin de la fonction. De toute façon, le "return" zappe cette ligne.
    _ Les résultats sont perdus à chaque fois, car les objets sont créés à chaque fois lors de l'appel à la fonction
    _ Tu divises deux entiers. Le résultat ne sera pas celui attendu.
    _ Même nom pour ta fonction et la variable. Pas top.

    Les deux autres fonctions :
    _ "srand(time(NULL));" doit être appelé une seule fois et au début du programme.
    _ Quand on utilise "%d" avec "scanf", la fonction attend un pointeur sur "int".
    _ Dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(joueur!=P || joueur!=F)
    "P" et "F" ne sont pas initialisées.
    _ Paramètres de mauvais type (char <-> char*) lorsque tu veux appeler une fonction.

    D'une manière générale :
    _ Il y a des variables non déclarées ou déclarées ailleurs.
    _ Tu déclares des fonctions dans des fonctions. Je pense que tu confonds l'appel de fonction et la déclaration de fonction.
    _ On ne sait pas qui a gagné ou perdu. Il faudrait plutôt (par ex) créer un tableau et stocker le résultat dedans (indice 0 -> joueur 1 , indice 1 -> joueur 2).
    _ Certaines fonctions sont censées renvoyer qqchose, mais ne renvoient rien.
    _ ...

Discussions similaires

  1. Pile ou face en python, HELP
    Par ced1903 dans le forum Général Python
    Réponses: 4
    Dernier message: 30/04/2013, 13h11
  2. Comment simuler un tirage à pile ou face en Java ?
    Par Pierre8r dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 03/12/2007, 15h41
  3. Pile ou Face
    Par pseudocode dans le forum Enigmes
    Réponses: 30
    Dernier message: 10/10/2007, 23h52
  4. pile ou face en VBA
    Par prince19 dans le forum Général VBA
    Réponses: 2
    Dernier message: 24/05/2007, 13h49
  5. [tv] [film] Pile et Face
    Par Médiat dans le forum Films & TV
    Réponses: 9
    Dernier message: 20/06/2006, 10h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo