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 :

Autre erreur de fonction


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 18
    Par défaut Autre erreur de fonction
    J'ai cette routine

    bool verifier_ligne(const Tsudoku* s, const int* l, const int* v);

    bool verifier_ligne(const Tsudoku* s, const int* l, const int* v)
    {
    int j;

    for (j=0;j<=8;j++)
    {
    if (s[l][j]==v)
    {
    return FAUX;
    }
    }
    return VRAI;
    }

    Je ne sais pas si je dois déférencer ou pas s et v. et pkoi j'ai un message d'erreur lors de la compilation

    De plus j'ai ce message d'erreur:

    sudoku.c: In function `verifier_ligne':
    sudoku.c:36: array subscript is not an integer


    Merci pour votre aide.

  2. #2
    Membre confirmé

    Inscrit en
    Avril 2004
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 78
    Par défaut
    Pourquoi tu met des pointeur d entier pour l et v ? Puisque tu ne changes pas leur valeur.

    De plus dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if (s[l][j]==v) {
    return FAUX;
    }
    l et v sont des adresses car tu les declares comme etant des pointeurs sur entiers.
    Tu devrais mettre la valeur sur laquelle ils pointent, c est a dire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if (s[*l][*j]==v) {
    return FAUX;
    }
    Mais ce que je te conseil, c est de declarer les 2 derniers parametres de ta fonction par valeur et non par reference (des entiers et non des pointeurs d'entiers) car tu ne fais aucune modification dessus.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 18
    Par défaut
    Plutot mettre ma routine comme ça

    bool verifier_ligne(const Tsudoku* s, int l, int v);

    bool verifier_ligne(const Tsudoku* s, int l, int v)
    {
    int j;

    for (j=0;j<=8;j++)
    {
    if (s[l][j]==v)
    {
    return FAUX;
    }
    }
    return VRAI;
    }

    J'ai toujours ce message :

    sudoku.c: In function `verifier_ligne':
    sudoku.c:36: subscripted value is neither array nor pointer


    ??????

  4. #4
    Membre confirmé

    Inscrit en
    Avril 2004
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 78
    Par défaut
    je pourrais voir ta structure Tsudoku stp.
    C est bizarre s est un pointeur sur la structure Tsudoku et tu utilise s comme une matrice....

  5. #5
    Membre émérite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    bool verifier_ligne(const Tsudoku* s, int l, int v)
    {
    int j;
     
    for (j=0;j<=8;j++)
    {
    if (s[l][j]==v)
    {
    return FAUX;
    }
    }
    return VRAI;
    }
    Pourrais tu faire parvenir ta structure Tsudoku ou le type associé?
    Car ca serait peut être:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    bool verifier_ligne(const Tsudoku** s, int l, int v)
    Nicolas

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 18
    Par défaut
    typedef struct
    {
    int tab[MAX][MAX];
    }Tsudoku;

  7. #7
    Membre confirmé

    Inscrit en
    Avril 2004
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 78
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    bool verifier_ligne(const Tsudoku* s, int l, int v)
    {
    int j;
     
    for (j=0;j<=8;j++)
    {
    if (s->tab[l][j]==v)
    {
    return FAUX;
    }
    }
    return VRAI;
    }
    normalement ca devrait etre bon.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 18
    Par défaut
    Perfect.
    Merci.
    En plus j'ai compris mon erreur...

  9. #9
    Membre confirmé

    Inscrit en
    Avril 2004
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 78
    Par défaut
    n oublie de d appuyer sur le bouton resolu en bas a gauche

Discussions similaires

  1. [VBA] Erreur avec fonction Dcount
    Par Virgile59 dans le forum Access
    Réponses: 6
    Dernier message: 15/06/2006, 09h56
  2. une autre erreur LNK2019
    Par crossbowman dans le forum C++
    Réponses: 5
    Dernier message: 25/02/2006, 22h29
  3. Erreur de fonction
    Par Anduriel dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 29/11/2005, 20h56
  4. Erreur de fonction
    Par Anduriel dans le forum Langage
    Réponses: 15
    Dernier message: 26/11/2005, 14h49
  5. Réponses: 6
    Dernier message: 20/10/2005, 22h33

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