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 :

variable via return +dur


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 68
    Par défaut variable via return +dur
    Voilà j'ai une jolie fonction qui demande a l'utilisateur quel niveau il veut choisir et qui adapte le nombre de tour max ainsi que la plage du nombre à trouver :
    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
    int level()
    {
     int niveau,max,tour;
     
    do{
    printf("\nChoississez le niveau de la partie\n1\tEasy\n2\tMedium\n3\tHard\n4\tEvil\n");
     
    scanf("%ld",&niveau);
     
     
     
    }while ((niveau <= 1)||(niveau >= 4));
     
    switch (niveau){
     
    case 1:
    max= 150, tour = 10;
    break;
     
    case 2:
    max= 250, tour = 9;
    break;
     
    case 3:
    max= 1200, tour = 8;
    break;
     
    case 4:
    max= 2300, tour = 7;
    break;
     
     
    }
    return max;
    return tour;
    }


    Quand il s'agisait de récupéré une variable par return sa allait mais là, comment je fais pour récupérer la valeur de "max " et de tour"??

    mon main (qui foire) :
    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
    int main ( int argc, char** argv )
    {
     
        printf("\nLe programme genere un nombre aleatoire, a vous de le trouver !!\n");
     
        srand(time(NULL));
        int recommencer ;
        int MAX, tour;
        do{
            int tourmax,niveau,max,tour=1;
     /* level();
            MAX = max;   // voila c'est ici que se situe mon problème 
            tourmax=tour; // j'aimerais pouvoir enlever les /* et aussi tourmax et  //MAX juste en desous
            printf ("\nVous avez choisi le niveau %d, bonne chance\n",niveau);
    */
            tourmax = 10;
            MAX =100;
            long nombreMystere = 0, nombreEntre = 0;
            const long  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 */
            printf("\nNombre comprit entre %ld et %ld\n", MIN,MAX);
            printf("\nNombre de tours maximum : %ld\n",tourmax);
            do
            {
            printf("\n===============================================================\n");
            printf("\nTour %d\n",tour);
            tour++;
            if (tour == tourmax+1)
            {
            printf("\nNombre de tours limite atteind vous avez perdu !! \n");
            break;
            }
            // 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);
     
        recommencer= regame();
        }while ( recommencer != 0);
     
    }
    Je sais que l'erreur se situe à la transmission des variables dans le main depuis ma fonction.

  2. #2
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Il faut absolument que tu te trouves un tutoriel ou un bouquin de C et que tu commences par les bases. La, tu programmes au hasard sans comprendre.
    Une fonction peut prendre des parametres:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int level(int max, int tour);
    Si on souhaite modifier ces parametres, en C il faut passer l'adresse de ceux-ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int level(int *max, int *tour);
    La suite dans ton cours de C prefere...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14
    Par défaut
    Citation Envoyé par DaZumba
    La, tu programmes au hasard sans comprendre.
    +1

    fait gaffe aussi a des petits details :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    do{
    printf("\nChoississez le niveau de la partie\n1\tEasy\n2\tMedium\n3\tHard\n4\tEvil\n");
     
    scanf("%ld",&niveau);
     
     
     
    }while ((niveau <= 1)||(niveau >= 4));
    ce qui en "humain" veut dire :
    -affiche "Choisissez......Evil"
    -recupere l'entrée de l'utilisateur et met la dans niveau
    et si niveau est inférieur ou égal a 1, ou supérieur ou egal a 4, recommence.
    Le probleme c'est que du coup le mec peut plus choisir le niveau 1 ou 4

    on pourait aussi te reprocher d'utiliser un format un peu trop grand pour ce que tu veux : sauf erreur %ld c'est un long (je suis pas sur j'utilise jamais de long) ce qui te permet de stocker un valeur du genre de -2^32 à 2^32-1 (je suis peut-etre en train de me planter la encore ) alors que tes valeurs vont de 1 à 4.
    Il faudrait que tu utilise un type de variable plus petit du genre un short ou meme un char (de -128 à 127, ce qui fait moins lourd ^^)

  4. #4
    Expert confirmé
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Par défaut
    Un petit tour sur la faq peut t'aider (encore un qui ne fais pas de recherches avant de poser une question ...)

    http://c.developpez.com/faq/c/?page=...etour_multiple

    De plus, oublie au plus vite les scanf, surtout, et ne le prend pas mal, vu ton niveau. Il est source d'erreur fréquente. Préfère le couple fgets et strtol, si tu as l'occasion de passer de temps en temps sur le forum, c'est un thème abordé assez souvent.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 68
    Par défaut
    merci les gas tout fonctionne parfaitement voici ma fonction finale au cas où sa servirait à quelqu'un :

    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
    int level(int* max, int* tour, int*niveau)
    {
     
    int niveau_ch;
    do{
    printf("\nChoississez le niveau de la partie\n1\tEasy\n2\tMedium\n3\tHard\n4\tEvil\n");
     
    scanf("%d",&niveau_ch);
     
     
     
    }while ((niveau_ch < 1)||(niveau_ch > 4));
     
    switch (niveau_ch){
     
    case 1:
    *niveau= 1,*max= 150, *tour = 10;
    break;
     
    case 2:
    *niveau= 2,*max= 250, *tour = 9;
    break;
     
    case 3:
    *niveau= 3,*max= 1200, *tour = 9;
    break;
     
    case 4:
    *niveau= 4,*max= 2300, *tour = 9;
    break;
     
     
    }
     
    return 0;
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. transmission de variable via return
    Par K4trix dans le forum C
    Réponses: 12
    Dernier message: 06/07/2006, 13h32
  2. [MySQL] Récupérer des variables via plusieurs tables (32 au total ^^)
    Par streeter dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 20/05/2006, 17h14
  3. Exporter une variable via un script sous KSH
    Par Snivel dans le forum Linux
    Réponses: 4
    Dernier message: 09/12/2005, 16h44
  4. Réponses: 2
    Dernier message: 01/11/2005, 13h25
  5. Transmettre une variable via un lien href
    Par developpeur_mehdi dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 08/01/2005, 14h49

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