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 :

problème de fonction


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 3
    Par défaut problème de fonction
    bonjour a tous, je débute dans la programmation, et je rencontre un premier obstacle, j'ai codé un jeu du plus ou moins avec deux fonctions, mais il y a une boulette dans mon code :


    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
    52
    53
    54
    55
    56
    57
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
     
     int genereNombre(int nombreMystere )
     {
          const int MAX = 100, MIN = 1;
     
        srand(time(NULL));
        nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
        return genereNombre;
     }
     
     int compareNombres(nombre, nombreMystere)
     {
         while (nombre !=nombreMystere)
         {
        scanf("%d",&nombre);
     
     
        if (nombre>nombreMystere)
        {
            printf("plus petit\n");
        }
        else if (nombre<nombreMystere)
        {
            printf("plus grand\n");
        }
        else if (nombre==nombreMystere)
        {
            printf("t'as trouve !!!!!!!!\n\n\n\n\n");
     
        }
        else
        {
            printf("tu a du te tronper de touche jeune homme...");
        }
         }
         return compareNombres;
     }
     
     
    int main ( int argc, char** argv )
    {
        int nombreMystere = 0, nombre = 0;
        const int MAX = 100, MIN = 1;
        nombreMystere = genereNombre( MAX  , MIN );
        do
        {
            printf("Quel est le nombre ? ");
            scanf("%d", &nombre);
            compareNombres(nombre, nombreMystere);
        } while (nombre != nombreMystere);
     
        return 0;
    }
    Et sur la ligne : "nombreMystere = genereNombre( MAX , MIN );" il me dit :
    "too many arguments to function "genereNombre"

    je pense que le problème viens des return car je n'ai pas tout a fait compris ce principe.

    merci.

  2. #2
    Membre Expert
    Avatar de supersnail
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 719
    Par défaut
    Bonjour et bienvenue sur le forum,

    Si tu pouvais mettre la coloration syntaxique (bouton # de l'éditeur), ce serait sympa (édite ton message pour le faire).

    Ensuite, genereNombre est déclarée comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int genereNombre(int nombreMystere )
    : cette fonction n'attend qu'un int, et tu lui en donnes deux .

    Donc forcément, le compilo râle

    Ensuite: Ta variable nombre n'est déclarée nulle part :

    Pour les "return" c'est pas "return nom_de_la_fonction", comme j'ai pu le voir, mais c'est "return uneVariable" , ou "return null" si tu ne renvoies rien .

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 3
    Par défaut
    Pour les "return" c'est pas "return nom_de_la_fonction", comme j'ai pu le voir, mais c'est "return uneVariable" , ou "return null" si tu ne renvoies rien .

    Oui, mais si le nom de la fonction est identique au nom de la variable ?
    pourquoi quand je tape ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    int genereNombre( nombreMystere )
     {
          const int MAX = 100, MIN = 1;
     
        srand(time(NULL));
        nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
        return genereNombre;
     }
    cette partie ne comprend pas ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    int main ( int argc, char** argv )
    {
        int nombreMystere = 0, nombre = 0;
        const int MAX = 100, MIN = 1;
        nombreMystere = genereNombre( MAX  , MIN );
        do
        {
            printf("Quel est le nombre ? ");
            scanf("%d", &nombre);
            compareNombres(nombre, nombreMystere);
        } while (nombre != nombreMystere);
     
        return 0;
    a oui aussi maintenant quand je le lance ça me donne comme nombre aléatoire : 845754, donc un poil plus grand que les limites imposées .

  4. #4
    Membre Expert Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Par défaut
    Bonjour,

    Après avoir relu ton message 2 ou 3 fois je pense que tu n'as pas bien compris les fonctions et surtout que lorsque tu déclares une variable dans le main elle n'est accessible que dans cette fonction, on parle alors de variable locale (à la fonction).

    Ensuite pour tes erreurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    nombreMystere = genereNombre( MAX  , MIN );
    int genereNombre( nombreMystere )
    Si on observe ces deux parties de code, tu devrais voir que tu envoies 2 paramètres MAX et MIN et ta fonction ne peut en recevoir que un : nombreMystere. Dans une fonction ce qu'il y a entre () n'est pas le nom de la variable que tu renvoies, le mieux est de te donner un exemple :

    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
     
     
    // Sans fonction. (Programme classique).
    int main(int argc, char* argv[])
    {
    	int i = 1;
    	while(i <= 5)
    	{
    		printf("J'aime le C\n");
    		i++;
    	}
    }
    // Avec une fonction qui recoit en paramètre le nombre de fois qu'on doit
    //afficher la phrase et qui ne renvoie rien.
    int main(int argc, char* argv[])
    {
    	int i = 5;
    	afficher(i);
    }
     
    void afficher (int compteur)
    {
    	int i = 1;
    	while(i <= compteur)
    	{
    		printf("J'aime le C\n");
    		i++;
    	}
    }
     
    // Avec une fonction qui recoit un paramètre et qui renvoie une valeur.
    int main(int argc, char* argv[])
    {
    	int parametre = 5;
    	int ceQueRetourneLaFonction = afficher(parametre);
    	printf("La phrase a bien ete afficher %d fois.\n", ceQueRetourneLaFonction);
    }
     
    int afficher(int compteur)
    {
    	int i = 1;
    	while(i <= compteur)
    	{
    		printf("J'aime le C\n");
    		i++;
    	}
    	return compteur;
    }
    Observe bien ces bouts de code et tu devrais être capable de t'auto-corriger.
    Ha oui et un autre détail, évite de mettre le même nom pour le paramètre que tu envoies dans ta fonction et celui que tu reçois.
    Bonne chance pour la suite et deviens un bon kernel hacker

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 3
    Par défaut
    Merci à vous deux, ça marche, je vais relire tout le cours sur les fonctions et je passe à la suite.
    a bientôt

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

Discussions similaires

  1. C++ Problème de fonctions et pointeurs
    Par zmatz dans le forum C++
    Réponses: 3
    Dernier message: 01/10/2005, 16h20
  2. [MFC][WINSOCK] Problème avec fonction recv
    Par Le Farfadet dans le forum MFC
    Réponses: 4
    Dernier message: 23/09/2005, 11h00
  3. Problème de fonction
    Par Anduriel dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/05/2005, 20h30
  4. Problème avec fonction d'envoie de mail
    Par zyg dans le forum Réseau/Web
    Réponses: 1
    Dernier message: 23/02/2005, 08h48
  5. [Requête] Problème avec fonction "DATE_FORMAT()"
    Par sekiryou dans le forum Requêtes
    Réponses: 4
    Dernier message: 11/01/2005, 21h52

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