Besoin d'aides pour un petit code en c++

Résolu
wannabesuper Messages postés 2 Date d'inscription mardi 29 mars 2011 Statut Membre Dernière intervention 9 avril 2011 - 8 avril 2011 à 17:17
wannabesuper Messages postés 2 Date d'inscription mardi 29 mars 2011 Statut Membre Dernière intervention 9 avril 2011 - 9 avril 2011 à 17:26
Bonjour à tous,

alors voilà j'essaye avec mes faibles connaissances en c++ de réaliser un petit programme sur le jeux des cochons dont vous pouvez trouver ici quelques informations*: http://jeudecochons.free.fr/PAGE2.htm
Alors voilà je dispose déjà des probabilités d'obtention des différents points, et mon programme est fait pour enfait comparer deux choix de méthodes. Je souhaites faire combatre un ordi contre un autre avec un par exemple qui laisse la main tout es 20 points et l'autres tous les 15 pour voir sur le long terme, admettons 1000 parties lequel serait le plus stratégique et permetrait un maximum de victoire. Voilà pour le programme de base, auquel je pense déjà quelques améliorations...
Mais voilà je bloque. J'arrive à un niveau ou je ne sais plus trop quoi faire. Alors si vous pouvez m'aider en sachant que j'aimerai rester simpliste dans les fonctions ( if, while, compteur … enfin vous voyez )...
Sinon j'utilise devc++
Voici mon code*:
Code:

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

int main()
{
srand(time(NULL));
int bidon=rand();
float tirage;
tirage=(rand()+0.0)/RAND_MAX;
int a;
a=0;
for(a=0;a>100;a=a+1)
{
if (tirage<=0.409295)
{
a=a+5;
}
else {
if ((tirage>0.409295) && (tirage<=0.6190857))
{
a=a+1;
}
else {
if ((tirage>0.6190857) && (tirage<=0.8216263))
{
a=a+0;
}
else {
if ((tirage>0.8216263) && (tirage<=0.89334133))
{
a=a+10;
}
else {
if ((tirage>0.89334133) && (tirage<=0.92358694))
{
a=a+15;
}
else {
if ((tirage>0.92358694) && (tirage<=0.99477799))
{
a=a+20;
}
else {
if ((tirage>0.99477799) && (tirage<=0.99532248855))
{
a=a+25;
}
else {
if ((tirage>0.99532248855) && (tirage<=0.9960650373))
{
a=a+40;
}
else {
if ((tirage>0.9960650373) && (tirage<=0.9961656501))
{
a=a+60;
}
else {
if ((tirage>0.9961656501) && (tirage<=1))
{
a=1000;
}
}
}
}
}
}
}
}
}
}
int b;
b=a;
if (b==1000)
{
cout << "Banqueroute !\n";

}
else{
cout << b << " points !!\n";
}
}
system ("PAUSE");
return(0);
}

Merci à ceux qui accepteront de m'aider ;)

2 réponses

wannabesuper Messages postés 2 Date d'inscription mardi 29 mars 2011 Statut Membre Dernière intervention 9 avril 2011
9 avril 2011 à 17:26
Rebonjour tout le monde, alors voilà j'ai crus comprendre que le bu du programme n'est pas très clair …
Je souhaite donc le repréciser ici...
Alors voilà ce que j'aimerai qu'il se passe :
2 JOUEURS ordinateurs, x et y
x joue en premier une partie sur deux.
Partie 1 :
x joue : plusieurs possibilité (voir ma chaine de sequence avec les if et else)
soit : x marque 0 point ( correspondant à « if ((tirage>0.6190857)&&(tirage<=0.8216263)) » ), dans ce cas la main passe au joueur Y.
x marque 1,5, 10 ou 15 points : dans ce cas il rejoue. (Si on fixe , j'imagine une bpoucle while pour rejouer jusqu'à ce que son score soit de 20 points)
troisième possibilité : x marque 20 points ou plus : dans ce cas il passe la main à y
Enfin, en cas de banqueroute ( ce qui correspond à ''if ((tirage>0.9961656501) && (tirage<=1)){ a=1000))'' ), x perds tous ces points et la main revient à y.

Quand la main vient au joueur 2, il joue de la même façon a la différence que son score limite avant de passer la main sera différent, imaginons 25.

Enfin, la partie s’arrête quand x ou y atteint 100 points.

La partie 2 se produit comme la 1 à l’exception que l'ordinateur y obtient la première main.


Ensuite, un compteur devra faire tourner ce programme sur un nombre important de partie, disons 10000. Et s'affichera sur la commande le nombre de partie gagné par x et le nombre gagné par y ainsi que le score cumulé de leur points (pour savoir si les parties ont été serrées ou pas .
Voilà mon but, la je suis paumé ou j'en suis et je peine pas mal, donc si quelqu'un peut m'aider à le réaliser avec les contraintes que j'ai dis plus haut (dev c++ et expressions ''basiques'' comme if, for , while …). J'aimerai qu'il soit le plus simple et basique possible dans l'idée du début de programme. Je sais que cela est possible, un ami a réalisé ce programme avec cela...

Merci et à très vite j'espère !!!:D
3
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
8 avril 2011 à 18:58
- Évite les "using namespace", voir: http://0217021.free.fr/portfolio/axel.berardino/articles/bon-usage-using-namespace
- Dev-C++ n'est plus mis à jour depuis des années, et il embarque un très vieux compilateur ! Je te conseille: QtCreator (mon préféré), Code::Blocks ou Visual Studio Express.
- iostream.h => iostream. iostream.h est l'ancienne version de iostream (de 1994).
- Pas besoin d'autant d'accolades.
- Si tu sais qu'une valeur ne changera plus jamais, après son initialisation, déclare la comme constante, via le mot clé const.

Je t'ai fait une version "propre" de ton code:
#include 
#include <cstdlib>
#include <ctime>

int main()
{
  srand(time(0));
  const double tirage = (double) rand() / (double) RAND_MAX;

  std::cout << tirage << std::endl;
  int score = 0;
  for (int a = 0; a < 100; ++a)
  {
    if (tirage <= 0.409295)
      score += 5;
    else if (tirage > 0.409295 && tirage <= 0.6190857)
      ++score;
    else if (tirage > 0.6190857 && tirage <= 0.8216263)
      ; // score += 0
    else if (tirage > 0.8216263 && tirage <= 0.89334133)
      score += 10;
    else if (tirage > 0.89334133 && tirage <= 0.92358694)
      score += 15;
    else if (tirage > 0.92358694 && tirage <= 0.99477799)
      score += 20;
    else if (tirage > 0.99477799 && tirage <= 0.99532248855)
      score += 25;
    else if (tirage > 0.99532248855 && tirage <= 0.9960650373)
      score += 40;
    else if (tirage > 0.9960650373 && tirage <= 0.9961656501)
      score += 60;
    else if (tirage > 0.9961656501 && tirage <= 1)
      score = 1000;
  }

  if (score == 1000)
    std::cout << "Banqueroute !" << std::endl;
  else
    std::cout << score << " points !!" << std::endl;

  //system ("PAUSE"); // Windows only
  return(0);
}


________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
0
Rejoignez-nous