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 :

Passage de tableau en paramètre...


Sujet :

C

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Passage de tableau en paramètre...
    Bonjour,
    Après m'être renseigné sur la faq et la façon de passé un tableau en paramètre, j'ai voulu aplpiqué sur mon code mais ça marche pas ... pour une raison que je n'arrive pas à trouver ...
    Si une bonne ame est en mesure de m'éclairer je suis preneur ...
    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
     
    int degre;
     
    double f(double x,int* tabcoef)
    {
     int ResultTemp[degre],i,j;
     double ResultFinal=0;
     for(i=degre;i<=0;i--)
     {
      if(i!=0)
      {
       ResultTemp[i]=x;
       for(j=1;j<i;j++)
       {
        ResultTemp[i]*=x;
       }
       ResultTemp[i] = ResultTemp[i] * tabcoef[i];
      }
      else
      {
       ResultTemp[i] = tabcoef[i];
      }
      ResultFinal+=ResultTemp[i];
     }
     return ResultFinal;
    }
     
     
    int main(void)
    {
        int i,racine=-50;
        printf("Saisissez le degre du polynome : \n");
        scanf("%d",&degre);
        fflush(stdin);
        int coefficient[degre+2][3];
     
        for(i=degre;i>=0;i--)
        {
         printf("Saisissez le coefficient pour le degre %d\n",i);
         scanf("%d",&coefficient[i][0]);
         fflush(stdin);
        }
     
     
     
     
        //on prends les racines évidentes entre -10 et +10
        for(i=-10;i<=10;i++)
        {
         if(f(i,coefficient)<=0.0000001 && f(i,coefficient)>=-0.0000001)
         {
          racine = i;
         }
        }  
       }
    L'erreur est indiqué au niveau de l'appel de la fonction ...
    Merci d'avance!

  2. #2
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut Re: Passage de tableau en paramètre... (si si j'ai lu la FAQ
    bonjour,
    Citation Envoyé par Doomi
    Tu n'as pas dû lire toute la FAQ.

    Citation Envoyé par Doomi
    L'erreur est indiqué au niveau de l'appel de la fonction ...
    Merci d'avance!
    quelle appel de fonction? quelle erreur? ça peut nous être utile pour t'aider

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    En effet je n'ai pas lu toute la FAQ mais seulement la parti qui m'interessait ... (à savoir le passage de tableau en paramètre).

    L'erreur se situe donc au niveau du passage de mon tableau 'coefficient' à la fonction 'f'.

    Utilisant Devcpp pour compiler, l'erreur que j'obtient est identifié ainsi :
    "[Warning] passing arg 2 of `f' from incompatible pointer type " ...

    J'espère que ce coup-ci j'ai été assez clair

  4. #4
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Oui c'est mieux
    gcc ce plein que coefficient n'est pas du type attendu par la fonction f :
    est différent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int coefficient[degre+2][3];
    il faut mettre :
    Attention, tu utilise le mélange de déclaration et de code ce qui fait partie des nouveauté du C99 mais gcc n'est pas encore au point sur le C99 : http://gcc.gnu.org/c99status.html

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Edit : En fait les deux erreurs sont toujours là ... (/edit)

    Le fait de devoir mettre deux "*" c'est dû au fait que mon tableau soit sur deux dimensions?

  6. #6
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par Doomi
    Le fait de devoir mettre deux "*" c'est dû au fait que mon tableau soit sur deux dimensions?
    Oui
    Comme tu avais au début, c'etait pour passer un tableau et non un tableau de tableau !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  7. #7
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Si je ne trompe pas (car non testé) il faut faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    double f(double x,int tabcoef[][3])
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Trad D => et merci

    Néanmoins pour ne pas rester ignare toute ma vie tu pourrais me donner l'explication logique qui va avec s'il te plait? Histoire que le prochain je n'ai pas à chercher de l'aide

    Merci encore

  9. #9
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Je crois que le compilo a besoin de connaitre la "taille" du type de données pointée pour les incrémentations, mais toujours la même chose, sans aucune garantie
    S tu fais int **, le compilo suppose que tu lui passes un pointeur de pointeur (c-a-d que tab[0] est un pointeur vers une zone mémoire où on trouvera des entiers) ce qui n'est pas le cas.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Ok d'ac
    Merci beaucoup pour ton aide et tes explications

    Et merci aussi à ceux qui se sont penchés sur le sujet

  11. #11
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Doomi
    L'erreur se situe donc au niveau du passage de mon tableau 'coefficient' à la fonction 'f'.

    Utilisant Devcpp pour compiler, l'erreur que j'obtient est identifié ainsi :
    "[Warning] passing arg 2 of `f' from incompatible pointer type " ...
    Tu as défini une fonction avec une interface pour un tableau a une dimension,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    double f(double x,int* tabcoef)
    et tu lui passes le nom d'un tableau à 2 dimensions.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        int coefficient[degre+2][3];
    <...>   
         if(f(i,coefficient)<=0.0000001 && f(i,coefficient)>=-0.0000001)
    C'est incohérent. Tu veux faire quoi exactement ?

    D'autre part, plutôt que 0.0000001 qui n'a aucun sens, je pense que tu veux DBL_EPSILON.
    Pas de Wi-Fi à la maison : CPL

  12. #12
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par gege2061
    gcc ce plein que coefficient n'est pas du type attendu par la fonction f :
    est différent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int coefficient[degre+2][3];
    il faut mettre :
    Euh, non.
    http://emmanuel-delahaye.developpez.....htm#param_tab
    Pas de Wi-Fi à la maison : CPL

  13. #13
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Doomi
    Edit : En fait les deux erreurs sont toujours là ... (/edit)

    Le fait de devoir mettre deux "*" c'est dû au fait que mon tableau soit sur deux dimensions?
    En fait, c'est une erreur.

    http://emmanuel-delahaye.developpez.....htm#param_tab
    Pas de Wi-Fi à la maison : CPL

  14. #14
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Euh, non.
    Merci pour la correction, j'ai perdu l'habitude des tableaux statiques

  15. #15
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    C'est incohérent. Tu veux faire quoi exactement ?
    D'autres trucs ... comme j'suis pas très fortiche en programmation C je fais des pauses et vérifie le fonctionnement de mon programme par à coup ... donc c'est sûr que ça veut rien dire des fois ...


    Merci à toi

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

Discussions similaires

  1. Shell : Passage de tableau en paramètre
    Par VITALTH dans le forum Shell et commandes POSIX
    Réponses: 8
    Dernier message: 25/12/2023, 14h21
  2. Passage de tableau en paramètre et affectation
    Par Jimalexp dans le forum C++
    Réponses: 4
    Dernier message: 23/01/2009, 08h40
  3. Passage de tableau en paramètre
    Par Teddy dans le forum Débuter
    Réponses: 3
    Dernier message: 26/12/2007, 11h54
  4. Réponses: 2
    Dernier message: 15/01/2007, 18h42
  5. Problème de passage de tableau en paramètre
    Par Tueur_a_gage dans le forum ASP
    Réponses: 9
    Dernier message: 16/11/2006, 20h09

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