Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1657 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Aide pour petit prog

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Aide pour petit prog

n°1218898
Juuni
Posté le 09-10-2005 à 17:16:35  profilanswer
 

Bonjour, voila j'ai un petit prog à faire pour mes cours en turbo C++ et j'aurais besoin d'un ptit coup de mains  :ange:  
 
Voici le sujet:
Un joueur lance 2 dés. Si la somme des 2 dés est 2, il gagne 10€.Si seulement l'un des 2 dés est 1, il gagne 5€. Il ne gagne rien et ne perd rien si les 2 dés sont égaux et différents de 1. Dans les autres cas il perd 5€.
 
Ecrire un programme qui simule ce jeu, et affiche à l'écran le gain ou la perte.
 
 
Donc déjà on a comme précision qu'il faut utiliser randomize () et random (). Mais c'est la ou est le probleme car je vois pas trop comment les utiliser (j'ai regarder l'aide et sur le net mais j'ai du mal ^^), ils vont me servir pour déterminer une valeur aléatoire pour les dés mais je sais pas comment faire  :heink:  
 
Si quelqu'un pouvait me donner quelques explications (un ptit exemple si possible) sa serait simpa  :D  Je ne demande pas le programme mais une aide qui me permettra de faire le prog moi même.
 
Merci d'avance  :bounce:


Message édité par Juuni le 10-10-2005 à 22:02:08
mood
Publicité
Posté le 09-10-2005 à 17:16:35  profilanswer
 

n°1218961
olivthill
Posté le 09-10-2005 à 18:28:21  profilanswer
 

Voici le début d'un programme possible :

void lance_les_des(int *de1, int *de2)
{
  *de1 = rand(..... // je ne me souviens plus des paramètres
  *de2 = rand(......
}
 
void maj_score(int *score_joueur, int de1, int de2)
{
  if (d1 + d2 == 2)
     *score_joueur += 10;
  else
     // les autres conditions sont à programmer
}
 
void main(void)
{
   // declarer les variables ...
 
  score_joureur = 0;
  de1 = 0;
  de2 = 0;
  randomize();
  do {
     lance_les_dés(&de1, &de2);
     maj_score(&score_joueur, de1, de2);
      // Demander au joueur s'il veu continuer
  } while (joueur_veut_continuer == TRUE);
   // affiche score final
   return;
}

Message cité 1 fois
Message édité par olivthill le 09-10-2005 à 18:29:41
n°1218975
Juuni
Posté le 09-10-2005 à 19:06:08  profilanswer
 

Tout dabord merci pour ton aide oliv  :ange:  
Ensuite pour rand faudrais pas mettre

Code :
  1. *de1 = 1+ramdom(6)

??? sa permettrais d'avoir un nombre de 1à6, si je me trompe pas  :p  
rand jvois à peut pres comment l'utiliser mais par contre jcomprend pas trop pour randomize  :??:  rand et randomize vont toujours ensemble???


Message édité par Juuni le 09-10-2005 à 19:06:48
n°1219001
jlighty
Posté le 09-10-2005 à 19:57:19  profilanswer
 

Comment ton PC te retourne un nombre aléatoire :
1) il faut générer tout d'abord la liste contenant des nombres aléatoires suivant une variable (la timestamp par ex) -> randomize
2) tu récupères les valeurs aléatoires par rand.
regarde sur le net (google) les manuels des fonctions rand et randomize.


Message édité par jlighty le 09-10-2005 à 19:58:05
n°1219011
Juuni
Posté le 09-10-2005 à 20:21:47  profilanswer
 

En faite ramdomize () sa sert a initialisé la fonction aleatoire, non? est ce que sa serait pas équivalent à sa: srand( time( NULL ) ); et sinon pour dire dans quel interval sera choisit le nombre c'est random qui s'en charge enfin c'est avec random que l'on précise ça?

n°1219029
jlighty
Posté le 09-10-2005 à 20:43:29  profilanswer
 

Citation :

En faite ramdomize () sa sert a initialisé la fonction aleatoire, non? est ce que sa serait pas équivalent à sa: srand( time( NULL ) );


Oui http://cboard.cprogramming.com/arc [...] -2366.html

Citation :

et sinon pour dire dans quel interval sera choisit le nombre c'est random qui s'en charge enfin c'est avec random que l'on précise ça?


d'après "man 3 rand", il faut utiliser la variable  RAND_MAX

n°1219109
Juuni
Posté le 09-10-2005 à 23:02:21  profilanswer
 

bon alors j'ai fait sa:
 

Code :
  1. #include<stdlib.h>
  2. #include<time.h>
  3. #include<stdio.h>
  4. #include<conio.h>
  5. void lance_les_des(int de1, int de2)
  6. {
  7.   printf("Appuyez sur une touche pour lancer les dés" );
  8.   de1 = 1+random(6)  /* Choisit un nombre aleatoire entre 1 et 6.*/
  9.   de2 = 1+random(6)
  10. }
  11. void maj_score(int score_joueur, int de1, int de2)
  12. {
  13.   if(de1 + de2 == 2)
  14.    {
  15.      score_joueur = 10;
  16.    }
  17.    else
  18.    {
  19.     if(de1 == 1)
  20.      {
  21.       score_joueur = 5;
  22.      }
  23.       else
  24.       {
  25.        if(de2 == 1)
  26.         {
  27.          score_joueur = 5;
  28. }
  29.  else
  30.          {
  31.   if(de1 == de2)
  32.            {
  33.             score_joueur = 0;
  34.            }
  35.     else
  36.     {
  37.      score_joueur = -5;
  38.     }
  39.  }
  40.       }
  41.     }
  42. }
  43. void main()
  44. {
  45.   int de1;
  46.   int de2;
  47.   int score_joueur;
  48.   score_joueur = 0;
  49.   de1 = 0;
  50.   de2 = 0;
  51.   randomize();
  52.     do
  53.      {
  54.      lance_les_des(&de1, &de2);
  55.      maj_score(&score_joueur, de1, de2);
  56.      }
  57.    return;
  58. }


 
mon prog n'est pas encore fini mais j'ai 4 erreurs:
- 9: statement missing;
- 13: declaration synthax error
- 64: declaration missing;
- 64: compound statement missing }
 
Euhh jcomprend ce que veulent dire les erreurs mais j'arrive pas à les corriger  :(

Message cité 1 fois
Message édité par Juuni le 09-10-2005 à 23:02:50
n°1219110
Joel F
Real men use unique_ptr
Posté le 09-10-2005 à 23:04:04  profilanswer
 

Ca manque de ; a la fin de plein de ligne :D

n°1219119
KangOl
Profil : pointeur
Posté le 09-10-2005 à 23:15:47  profilanswer
 

et de pointeurs et d'optimisation des conditions...


---------------
Nos estans firs di nosse pitite patreye...
n°1219130
Juuni
Posté le 09-10-2005 à 23:35:09  profilanswer
 

ouaip j'avais deviné que yavait un probleme de ; mais jvois pas trop ou il en manque  :heink:  et pour ce qui est des pointeur et d'optimisation des conditions... ba sa me dit rien :??:  j'ai pas du voir sa en cours encore (on commence)

mood
Publicité
Posté le 09-10-2005 à 23:35:09  profilanswer
 

n°1219243
jlighty
Posté le 10-10-2005 à 09:17:11  profilanswer
 

une question, tu dois utiliser la programmation orientée objet ? car ce que tu fais ressemble plus au C qu'au C++.

n°1219335
jagstang
Pa Capona ಠ_ಠ
Posté le 10-10-2005 à 11:02:21  profilanswer
 

les ; ligne 8 et 9
 
 
une chose
 
score_joueur = -5
 
ne fera pas perdre 5 pts au joueurs... regarde -=5

n°1219902
Juuni
Posté le 10-10-2005 à 20:30:37  profilanswer
 

c'est du C sque je fais  :ange:

n°1219903
jlighty
Posté le 10-10-2005 à 20:33:18  profilanswer
 

alors pourquoi dans la catégorie C++ :D


Message édité par jlighty le 10-10-2005 à 22:14:04
n°1220007
Juuni
Posté le 10-10-2005 à 22:00:34  profilanswer
 

ouaip jviens de voir, j'ai fait mon boulet  :pt1cable:  
Bon sinon pour mon prog voici le code après pas mal de modifications, mais il me reste un probleme c'est que j'ai pas l'affichage du "gain" car en regardant le deroulement de mon prog il ne va pas dans ma fonction maj_score, c'est dans ma fonction lance_les_des que je dois lui dire d'allez dans maj_score mais je sais pas comment faire sa  :sweat:  
 
 

Code :
  1. #include<stdlib.h>
  2. #include<time.h>
  3. #include<stdio.h>
  4. #include<conio.h>
  5. int maj_score(int score_joueur, int de1, int de2);
  6. int lance_les_des()    /* determination de deux nombre aleatoire. */
  7. {
  8.   int de1;
  9.   int de2;
  10.   int val;
  11.   int a;
  12.   int score_joueur;
  13.   printf("Appuyez sur une touche pour lancer les des \n" );
  14.   getchar();
  15.   de1 = 1+random(6);
  16.   de2 = 1+random(6);
  17.   printf("Le premier de a pour valeur:%d\n",de1);
  18.   printf("Le deuxieme de a pour valeur:%d\n",de2);
  19.   val = score_joueur;
  20.   return val;
  21. }
  22. int maj_score(int score_joueur, int de1, int de2)    /* comparaison des scores de chacun des dés. */
  23. {
  24.   if(de1 + de2 == 2)
  25.    {
  26.      score_joueur = 10;
  27.    }
  28.    else
  29.    {
  30.     if(de1 == 1)
  31.      {
  32.       score_joueur = 5;
  33.      }
  34.       else
  35.       {
  36.        if(de2 == 1)
  37.         {
  38.          score_joueur = 5;
  39. }
  40.  else
  41.          {
  42.   if(de1 == de2)
  43.            {
  44.             score_joueur = 0;
  45.            }
  46.     else
  47.     {
  48.      score_joueur = -5;
  49.     }
  50.  }
  51.       }
  52.     }
  53.     return score_joueur;
  54. }
  55. void gain_perte(int score_joueur)
  56. {
  57. if(score_joueur>0)
  58.   {
  59.    printf("Vous avez gagne:%d",score_joueur);
  60.    getchar();
  61.   }
  62.    else
  63.    {
  64.    printf("Vous avez perdu:%d",score_joueur);
  65.    getchar();
  66.    }
  67.   getchar();
  68. }
  69. void main()
  70. {
  71.   int de1;
  72.   int de2;
  73.   int score_joueur;
  74.   int a;
  75.   int gain_perte;
  76.   char c;
  77.   score_joueur = 0;
  78.   de1 = 0;
  79.   de2 = 0;
  80.   randomize();
  81.   clrscr();
  82.     do
  83.      {
  84.      a=lance_les_des();
  85.      gain_perte=gain_perte+a;
  86.      printf("Voulez vous continuer a jouer? (o/n) \n" );
  87.      scanf("%c",&c);
  88.      }
  89.      while(c=='o');
  90. }

n°1220023
jlighty
Posté le 10-10-2005 à 22:17:01  profilanswer
 

la mise à jour tu l'appelles dans ton main

n°1220334
Emmanuel D​elahaye
C is a sharp tool
Posté le 11-10-2005 à 13:19:30  profilanswer
 

olivthill a écrit :

Voici le début d'un programme possible :


Attention. Ni randomize() ni random() ne sont des fonctions standards mais des extensions de Borland C. Les fonctions du C sont srand() et rand().  
 
Mais ceci peut aider quand on a pas de compilateur Borland:
 
http://mapage.noos.fr/emdel/clib.htm
Module RANDOM
 
D'autre part, main() retourne int. Toujours.
 
http://mapage.noos.fr/emdel/notes.htm#typemain


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1220358
Emmanuel D​elahaye
C is a sharp tool
Posté le 11-10-2005 à 13:40:22  profilanswer
 

Juuni a écrit :

bon alors j'ai fait sa:
<...>
mon prog n'est pas encore fini mais j'ai 4 erreurs:
- 9: statement missing;
- 13: declaration synthax error
- 64: declaration missing;
- 64: compound statement missing }
 
Euhh jcomprend ce que veulent dire les erreurs mais j'arrive pas à les corriger  :(


Quelques remarques et corrections... Pose des questions si tu ne comprends pas.


#include<stdlib.h>
#include<time.h>
#include<stdio.h>
#include<conio.h>
 
/* -ed- ajoute' pour la compatibilite'... */
#ifndef random
#define random(num) (int)((double)rand()/RAND_MAX * (num))
#endif
 
#ifndef randomize
#define randomize() srand((unsigned)time(NULL))
#endif
 
/* -ed- cette fonction n'est pas exportee, donc 'static'. */
static void lance_les_des(int de1, int de2)
{
    /* -ed- attention, les accents ne sont pas portables... Manque un '\n' */
    printf("Appuyez sur une touche pour lancer les dés" );
     
    /* -ed-
    vu le texte affiche', on pourrait s'attendre a une fonction  
    de suspension. Je n'en vois pas... Ajoute un getchar().
    */
    (void) getchar();
     
    /* -ed-
       en principe, on ne met pas de commentaire en fin de ligne  
     (sauf tres court). Commentaire deplace.  
     */
    /* Choisit un nombre aleatoire entre 1 et 6.*/
     
    /* -ed
    manque un ';'. Ajoute.  
    Attention 'random() n'est pas une fonction standard.
    */
    de1 = 1+random(6);
    de2 = 1+random(6);
    /* -ed-
    Attention, tu modifies la valeur des parametres.  
    C'est en général le signe d'une erreur de conception.  
    En effet, si on veut que la fonction appelante recupere  
    les valeurs tirees, il faut passer l'adresse des variables  
    via un pointeur du meme type, ou l'adresse d'une structure  
    contenant les deux variables.
     
    Je te laisse corriger ca et terminer la mise au point de ton code...
    */
}
 
void maj_score(int score_joueur, int de1, int de2)
{
    if(de1 + de2 == 2)
    {
        score_joueur = 10;
    }
    else
    {
        if(de1 == 1)
        {
            score_joueur = 5;
        }
        else
        {
            if(de2 == 1)
            {
                score_joueur = 5;
            }
            else
            {
                if(de1 == de2)
                {
                    score_joueur = 0;
                }
                else
                {
                    score_joueur = -5;
                }
            }
        }
    }
}
 
/* -ed- main() retourne int. Toujours. */
int main(void )
{
    int de1;
    int de2;
    int score_joueur;
    score_joueur = 0;
    de1 = 0;
    de2 = 0;
    randomize();
    do
    {
        lance_les_des(&de1, &de2);
        maj_score(&score_joueur, de1, de2);
    }
    /* -ed- manque un while... Ajoute ceci, mais ... */
    while (1);
    /* -ed-
    ... codage barbare. (sortie par Ctrl-break)  
    Il faudrait tester une condition de sortie...  
    */
 
   /* -ed- parce que main() retourne int, ajoute un 0. */
    return 0;
}


Message édité par Emmanuel Delahaye le 11-10-2005 à 13:44:21

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1220668
Juuni
Posté le 11-10-2005 à 18:51:52  profilanswer
 

Bon ba deja merci pour l'aide c'est simpa  :) bon ensuite jvai rebosser mon prog ce soir en rentrant donc jverais a ce moment la si ya des  truc que je comprends pas ou si j'ai un probleme  :p  
Sinon pour random et randomize normalement ce que j'ai fait est bon (enfin d'apres mon prof ^^) car on est sous borlant.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Aide pour petit prog

 

Sujets relatifs
Petit problème avec WHERE[AIDE PHP] manque une ou 2 commandes sur mon script...
[VISUAL] ajouter une aide dans le dynamic help[AIDE] phpnuke
>>>besoin d'aide pour un site photo<<<petit programme
aide boutique en lignebesoin de votre aide
ptite aide gawk pour afficher la ligne que je veuxbesoin d'aide pour ce petit prog.
Plus de sujets relatifs à : Aide pour petit prog


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR