Besoin d'aides pour un code en c++
Répondre à la discussion
Affichage des résultats 1 à 12 sur 12

Besoin d'aides pour un code en c++



  1. #1
    Wanna Be Superman

    Besoin d'aides pour un code en c++


    ------

    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 <iostream.h>
    # 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

    -----
    Dernière modification par Jack ; 07/04/2011 à 21h33. Motif: AJout balises code

  2. #2
    whoami

    Re : Besoin d'aides pour un code en c++

    Bonjour,

    Je pense (ça veut dire : j'en suis sûr ) qu'avant de te lancer dans ce genre de truc, il vaut mieux apprendre un peu plus le langage, ne serait-ce que pour éviter ça :
    Alors si vous pouvez m'aider en sachant que j'aimerai rester simpliste dans les fonctions ( if, while, compteur … enfin vous voyez )
    La décomposition d'un programme en fonctions est fondamentale si on veut progresser ET écrire du code lisible.

    Au passage, tu peux simplifier les tests de ta série de if ... else.

  3. #3
    Wanna Be Superman

    Re : Besoin d'aides pour un code en c++

    Oui je suis bien d'accord avec toi mais en fait, étant novice je ne connais pas encore beaucoup de fonctions et beaucoup d'appels aux différentes bibliothèques. un ami a réussi a faire ce programme en restant avec des fonctions simples donc je pense que cela est possible à mon niveau... Bon je vais essayer de le rebosser et vous m'en direz des nouvelles sur les pistes que je devrais essayer

  4. #4
    pazcal

    Re : Besoin d'aides pour un code en c++

    Personnellement, je ne vois pas trop où il y a du c++ là dedans...

    A plus

  5. A voir en vidéo sur Futura
  6. #5
    ProgVal

    Re : Besoin d'aides pour un code en c++

    Bonjour,

    Déjà, un bête éclaircissement du code :
    Code:
    # include <iostream.h>
    # include <stdlib.h>
    # include <time.h>
    
    int main()
    {
        srand(time(NULL));
        int bidon=rand();
        float tirage;
        int a=0;
        int b;
        tirage=(rand()+0.0)/RAND_MAX;
        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;
    	}
    	b=a;
    	if (b==1000)
    	{
    	    cout << "Banqueroute !" << endl;
    	}
    	else
    	{
    	    cout  << b << " points !!" << endl;
    	}
    	system ("PAUSE");
    	return(0);
        }
    }
    ProgVal

    EDIT : il semblerait que le nouveau code soit faux, mais je ne peux pas faire mieux, étant donné que je ne comprends rien à l'original. Mais bon, tu vois l'idée.
    Dernière modification par ProgVal ; 08/04/2011 à 18h03.

  7. #6
    whoami

    Re : Besoin d'aides pour un code en c++

    Bonjour,

    Puisque tu débutes, reprends aux bases, les bons vieux papier + crayon :

    tu suis pas à pas ton programme, en notant l'évolution des variables, etc., et tu verras bien quelque chose au moins qui ne va pas.

    "tu suis pas à pas ton programme" veut dire "suivre ce qu'il fait réellement", et pas "ce que tu penses qu'il fait".

  8. #7
    Wanna Be Superman

    Re : Besoin d'aides pour un code en c++

    Merci déjà à vous
    et pour avoir suivis ton conseil, j'ai trouvais que la variable b était inutile en effet. Sinon qu'il manque le concept de deux ordinateurs s'affrontant ...
    A part cela merci pour l'astuce du else if() qui rend plus lisible mon code !
    J'ai mis à plat ce que devait réaliser le programme pour que ce soit plus clair, tant pour moi que pour vous . Voici ce que ca donnerait :

    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'arrete 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*!!!

  9. #8
    boulbidor

    Re : Besoin d'aides pour un code en c++

    for(a=0; a>100; a=a+1)
    Je ne sais pas ce que ton code donne mais cette partie est un peu flou, Tu devrais mettre
    for(a=0; a<100; a++)
    Autrement ta boucle ne tournera jamais !!!

  10. #9
    Dormeur74

    Re : Besoin d'aides pour un code en c++

    Je pense que le plus lisible serait une bonne vieille structure conditionnelle du type switch .

  11. #10
    whoami

    Re : Besoin d'aides pour un code en c++

    Bonjour,
    Citation Envoyé par Dormeur74 Voir le message
    Je pense que le plus lisible serait une bonne vieille structure conditionnelle du type switch .
    Non, switch n'est pas prévu pour gérer des intervalles.

    Pour Wanna Be Superman : reprends à zéro, et écris un algorithme te conduisant à ce que tu veux faire, sans te préoccuper des détails (ta série de if ... else peut par exemple être remplacée par On_Calcule_Increment).

    Et ensuite seulement, une fois que l'algorithme est au point, tu passes au codage, avec éventuellement une étape intermédiaire pour affiner (comme prévoir un peu plus de détails, etc.).

    C'est la démarche normale pour programmer : on ne se jette jamais directement sur la phase codage dans le langage cible.

  12. #11
    Wanna Be Superman

    Re : Besoin d'aides pour un code en c++

    Que signifie le on calcule increment?
    merci

  13. #12
    whoami

    Re : Besoin d'aides pour un code en c++

    Bonjour,

    Ce sont les différentes valeurs que tu attribues à ta variable a selon ta série de tests.

Discussions similaires

  1. besoin d'aides,Passage en 1ere sti electrotechnique
    Par 974staya dans le forum Orientation avant le BAC
    Réponses: 5
    Dernier message: 08/07/2009, 09h04
  2. Besoin d'aides pour débuter un exercice!!!!
    Par inviteac1ea236 dans le forum Chimie
    Réponses: 16
    Dernier message: 02/12/2008, 20h44
  3. besoin d'aides pour rapport Navilog1
    Par inviteb7f87460 dans le forum Sécurité et malwares : désinfectez votre machine
    Réponses: 11
    Dernier message: 18/09/2008, 21h33
  4. besoin d'aides exo sur primitive
    Par invite889ad557 dans le forum Mathématiques du collège et du lycée
    Réponses: 7
    Dernier message: 11/03/2007, 20h03
  5. Urgent : besoin d'aides directs et magazines de références pour TV par Internet
    Par invite212ab20d dans le forum Internet - Réseau - Sécurité générale
    Réponses: 4
    Dernier message: 20/01/2005, 07h58