Forum du Secteur-lambda
Nous sommes le 09 Sep 2010 23:19 50

Heures au format UTC + 2 heures




Poster un nouveau sujet Répondre au sujet  [ 6 messages ] 
Auteur Message
 Sujet du message: [C] le plus ou moins
MessagePosté: 01 Juin 2008 11:02 27 
Hors ligne
Admin
Avatar de l’utilisateur

Inscription: 29 Aoû 2007 22:35 37
Messages: 1050
Localisation: local
Salut voici un petit probleme que j'ai un peu de mal à resoudre:

Code:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>





   
int main ( int argc, char** argv )
{
    long nombreMystere = 12, nombreEntre =0;
    const long MAX = 100, MIN = 1;
   

    // Génération du nombre aléatoire
    nombreMystere = genereNombre(MIN, MAX);
   
    /* La boucle du programme. Elle se répète tant que l'utilisateur
    n'a pas trouvé le nombre mystère */
   
    do
    {
        printf("nbr myster %ld \n",nombreMystere );
        // On demande le nombre
        printf("Quel est le nombre ? ");
        scanf("%ld", &nombreEntre);
   
        // On compare le nombre entré avec le nombre mystère
        compareNombres(nombreEntre, nombreMystere);
   
    } while (nombreEntre != nombreMystere);
   
   
    system("PAUSE");
    return 0;
}

int genereNombre ( )
    {
    long nombreMystere;
    const long MAX = 100, MIN = 1;
             
    srand(time(NULL));
    nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
    return nombreMystere;
   
    }

int compareNombres( )
    {
      long nombreEntre;
      long nombreMystere;
      //do
     
          if ( nombreEntre >= nombreMystere)
          {
          printf ("c'est moins \n\n");
          }
          else
          { 
          printf ("c'est plus \n");
          }
       
      //while (nombreEntre != nombreMystere);
     
     
      return 0;
      }             


Voila le prog dit toujours que c'est plus même quand ça n'est pas le cas. :-?

_________________
Image
Image

Pierre qui roule n'amasse pas mousse...
Loués soient les Lambdiens.


Haut
 Profil  
 
 Sujet du message:
MessagePosté: 01 Juin 2008 11:39 08 
Hors ligne
Lambdien
Avatar de l’utilisateur

Inscription: 11 Avr 2007 21:42 34
Messages: 1221
Localisation: Angers
La fonction qui pose problème est celle-ci :

Code:
[code]int compareNombres( ) [/code]
    {
      long nombreEntre;
      long nombreMystere;
      //do
     
          if ( nombreEntre >= nombreMystere)
          {
          printf ("c'est moins \n\n");
          }
          else
          { 
          printf ("c'est plus \n");
          }
       
      //while (nombreEntre != nombreMystere);
     
     
      return 0;
      }


Donc, tu l'appelle avec des arguments (en gras ici) :
Code:
compareNombres([b]nombreEntre[/b], [b]nombreMystere[/b]);


Or, ta fonction ne prend pas d'arguments :
Code:
int compareNombres( )


Tu t'es trompe, tu as pense que le fait d'appeller la fonction avec des arguments allait assigner des valeurs au deux premieres variables :
Code:
      long nombreEntre;
      long nombreMystere;


Or, pour que ces deux variables soit prisent en compte, tu doit les declarer ainsi :
Code:
int compareNombres([b]long nombreEntre, long nombreMystere[/b])


Et la ca fonctionne :)

Voici la fonction complete :

Code:
void compareNombres(long nombreEntre, long nombreMystere)
{
      //do
     
            if ( nombreEntre > nombreMystere)
            {
            printf ("c'est moins \n");
            }
            else if( nombreEntre < nombreMystere)
            { 
            printf ("c'est plus \n");
            }
            else if( nombreEntre == nombreMystere)
            {
                printf ("Vous avez trouvez !\n") ;
            }
       
      //while (nombreEntre != nombreMystere);
     
}


Et voilà ! bien sûr, il ne faut pas oublier les prototypes de fonctions au debut du fichier, entre les #include et main() :

Code:
void compareNombres(long nombreEntre, long nombreMystere); 
long genereNombre(const long MIN, const long MAX) ;


Voici le code en entier :

Code:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
 
void compareNombres(long nombreEntre, long nombreMystere); 
long genereNombre(const long MIN, const long MAX) ;
 
   
int main ( int argc, char** argv )
{
    long nombreMystere = 12, nombreEntre =0;
    const long MAX = 100, MIN = 1;
   

    // Génération du nombre aléatoire
    nombreMystere = genereNombre(MIN, MAX);
   
    /* La boucle du programme. Elle se répète tant que l'utilisateur
    n'a pas trouvé le nombre mystère */
   
    do
    {
        printf("nbr myster %ld \n",nombreMystere );
        // On demande le nombre
        printf("Quel est le nombre ? ");
        scanf("%ld", &nombreEntre);
   
        // On compare le nombre entré avec le nombre mystère
        compareNombres(nombreEntre, nombreMystere);
   
    } while (nombreEntre != nombreMystere);
   
   
    system("PAUSE");
    return 0;
}

long genereNombre (const long MIN, const long MAX)
    {
    long nombreMystere; 
             
    srand(time(NULL));
    nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
    return nombreMystere;
   
    }

void compareNombres(long nombreEntre, long nombreMystere)
{
      //do
     
            if ( nombreEntre > nombreMystere)
            {
            printf ("c'est moins \n");
            }
            else if( nombreEntre < nombreMystere)
            { 
            printf ("c'est plus \n");
            }
            else if( nombreEntre == nombreMystere)
            {
                printf ("Vous avez trouvez !\n") ;
            }
       
      //while (nombreEntre != nombreMystere);
     
}             


Et voilà ! En tout cas gg, t'as des capacités je trouve :)

_________________
La dictature, c'est ferme ta gueule. La démocratie, c'est cause toujours.
- Coluche


Haut
 Profil  
 
 Sujet du message:
MessagePosté: 01 Juin 2008 12:01 23 
Hors ligne
Admin
Avatar de l’utilisateur

Inscription: 29 Aoû 2007 22:35 37
Messages: 1050
Localisation: local
ok merci pour cet eclaircicement :grin:

_________________
Image
Image

Pierre qui roule n'amasse pas mousse...
Loués soient les Lambdiens.


Haut
 Profil  
 
 Sujet du message:
MessagePosté: 21 Juin 2009 11:40 39 
Hors ligne
Amis des Lambdiens
Avatar de l’utilisateur

Inscription: 18 Juil 2008 14:57 10
Messages: 35
LoOoL C'est ça mon premier jeux que j'ai créé :D C'était un exercice sur le site où j'apprend à programmer. Voici ce que j'ai fait moi :

Code:
#include <stdio>
#include <stdlib>
#include <time>

int main ( int argc, char** argv )
{
    int continuerPartie=1,compteur=0,nombreMystere = 0, nombreEntre = 0,nombreJoueurs=0;

    printf("Bonjour et bienvenue sur le jeu : le nombre mystere !!\n\nCombien de joueurs y a-t-il : 1 ou 2 ?\n\n");
    scanf("%id",&nombreJoueurs);
    if(nombreJoueurs==1)
    {

    const int MAX = 100, MIN = 1;

    while(continuerPartie==1)
    {

    srand(time(NULL));
    nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;


    do
    {
        printf("Quel est le nombre ? ");
        scanf("%d", &nombreEntre);
        compteur++;

        if (nombreMystere > nombreEntre)
        {
            printf("C'est plus !\n\n");
        }
        else if (nombreMystere <nombreEntre> nombreEntre)
        {
            printf("C'est plus !\n\n");
        }
        else if (nombreMystere < nombreEntre)
        {
            printf("C'est moins !\n\n");
        }
        else
        {
            printf ("Bravo, vous avez trouve le nombre mystere en %i coups !!!\n\n",compteur);
        }

    } while (nombreEntre != nombreMystere);
    printf("Voulez-vous refaire une partie ? Si oui, tapez 1. Sinon, tapez 0\n\n");
    scanf("%id",&continuerPartie);

        if(continuerPartie==1)
        {
            printf("D'accord !");
        }
        else if(continuerPartie==0)
        {
            printf("Au revoir !");
            system("PAUSE");
        }
        else
        {
            printf("Imbecile !! Vous avez tape un faux numero !! Au revoir !! \n\n");
            system("PAUSE");
        }


    }
    }
    else if(nombreJoueurs<=0)
    {
    printf("Dans ce cas, je ne vois pas comment le jeux a pu se lancer tout seul... Bye !\n\n");
    system("PAUSE");
    }
    else
    {
    printf("Idiot ! J'ai dit 1 ou 2 joueurs pas plus !! Adieu !\n\n");
    system("PAUSE");
    }
    return 0;

}


Qu'en pensez-vous ? :)

_________________
Mais que vais-je bien faire d'un bâton détrempé de la pisse de l'ours du criquet migrateur ?

Trop fort mes rollers ! :cool:


Haut
 Profil  
 
 Sujet du message: Re: [C] le plus ou moins
MessagePosté: 04 Juil 2009 08:12 09 
Hors ligne
Lambdien
Avatar de l’utilisateur

Inscription: 11 Avr 2007 21:42 34
Messages: 1221
Localisation: Angers
Code:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main (void)
{
   // Initialisation des variables
    int continuerPartie = 1 ;
   int compteur = 0 ;
   int nombreMystere = 0 ;
   int nombreEntre = 0 ;
   int nombreJoueurs=0 ;
   
   srand(time(NULL));

    printf("Bonjour et bienvenue sur le jeu : le nombre mystere !\nCombien de joueurs y a-t-il : 1 ou 2 ?\n");
    scanf("%id", &nombreJoueurs);
   
   // On vérifie la valur entree par l'utilisateur
   while(nombreJoueurs < 1 || nombreJoueurs > 2)
   {
      printf("Veuillez saisir une valeur comprise entre 1 & 2 : ");
      scanf("%id", &nombreJoueurs);
   }
   
   // Si il n'y a qu'un seul joueur
    if(nombreJoueurs == 1)
    {
      // On défini la valeur max et min du nombre mystère
       const int MAX = 100, MIN = 1;

       while(continuerPartie == 1)
       {
         // On tire le nombre mystère
          nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;

          do
          {
            // Demande à l'utilisateur d'entrer le nombre
              printf("Quel est le nombre ? ");
              scanf("%d", &nombreEntre);
              compteur++;
            
            // Vérifie le nombre de l'utilisateur par rapport au nombre mystère
              if (nombreMystere > nombreEntre)
              {
                  printf("C'est plus !\n\n");
              }
              else if (nombreMystere < nombreEntre)
              {
                  printf("C'est moins !\n\n");
              }
              else
              {
                  printf ("Bravo, vous avez trouve le nombre mystere en %i coups !!!\n\n", compteur);
              }
          } while (nombreEntre != nombreMystere);
         
         // Demande à l'utilisateur si oui ou non il veut continuer la partie
          printf("Voulez-vous refaire une partie ? Si oui, tapez 1. Sinon, tapez 0 : ");
          scanf("%id", &continuerPartie);
         // vérification des données entrés par l'utilisateur
         while(continuerPartie < 0 || continuerPartie > 1)
         {
            printf("Voulez-vous refaire une partie ? Si oui, tapez 1. Sinon, tapez 0 : ");
            scanf("%id", &continuerPartie);
         }

         if(continuerPartie == 1)
         {
            printf("D'accord !");
         }
         
         else if(continuerPartie == 0)
         {
            printf("Au revoir !\n");
         }
       }
    }
   
    else if(nombreJoueurs == 2)
    {
       // Ici ton code pour deux joueurs
    }
   
   system("PAUSE");
    return 0;
}


Médites là dessus, jeune néophyte :D

_________________
La dictature, c'est ferme ta gueule. La démocratie, c'est cause toujours.
- Coluche


Haut
 Profil  
 
 Sujet du message: Re: [C] le plus ou moins
MessagePosté: 05 Juil 2009 21:32 05 
Hors ligne
Lambdien
Avatar de l’utilisateur

Inscription: 11 Avr 2007 21:42 34
Messages: 1221
Localisation: Angers
J'ai réécrit un code en C++ :
Code:
#include <iostream>
#include <time.h>

using namespace std;

int menu(void);
int skill(int choix);
int jeu(void);

int main(void)
{
   srand((int)time(NULL));
   // Boucle de jeu
   while(jeu() != 1)
   {

   }
   return EXIT_SUCCESS ;
}

int menu(void)
{
   int choix = 0 ;
   cout << "Le Nombre Mystere" << endl;
   cout << "Niveau de difficulte :\n1. Facile\n2. Moyen\n3. Difficile" << endl;
   do
   {
      cout << "Votre choix : " ;
      cin >> choix ;
   } while(choix < 1 || choix > 3) ;
   return choix;
}

int skill(int choix)
{
   int MAX = 0 ;
   switch(choix)
   {
      case 1:
         MAX = 100;
         break;
      case 2:
         MAX = 1000;
         break;
      case 3:
         MAX = 10000;
         break;
   }
   return MAX ;
}

int jeu(void)
{
   int choix = 0 ;
   int MIN = 0 ;
   int MAX = 0 ;
   int exit = 0 ;
   int compteur = 0 ;
   int nbMystere = 0 ;
   int nbEntre = 0 ;

   choix = menu() ;
   MAX = skill(choix) ;

   nbMystere = rand() % (MAX + 1) ;
   
   do
   {
      compteur++ ;
      do
      {
         cout << "Entrez un nombre (0 - " << MAX << ") : " ;
         cin >> nbEntre ;
      } while (nbEntre < 0 || nbEntre > MAX) ;
      cout << "Le nombre Mystere est ";
      if(nbEntre < nbMystere)
      {
         cout << "plus grand." << endl ;
      }
      else if(nbEntre > nbMystere)
      {
         cout << "plus petit." << endl ;
      }
      else
      {
         cout << "egale au nombre que vous avez entre.\nPartie gagner en " << compteur << "coups" << endl ;
      }
   } while(nbEntre != nbMystere) ;

   do
   {
      cout << "Quitter : 1 / Continuer : 0" << endl ;
      cin >> exit ;
   } while(exit < 0 || exit > 1) ;
   return exit;
}

_________________
La dictature, c'est ferme ta gueule. La démocratie, c'est cause toujours.
- Coluche


Haut
 Profil  
 
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 6 messages ] 

Heures au format UTC + 2 heures


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages
Vous ne pouvez pas joindre des fichiers

Rechercher:
Aller à:  
cron

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group

Secteur-lambda © 2002-2010