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 :

fonction & matrices


Sujet :

C

  1. #1
    Membre éprouvé Avatar de orfix
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 707
    Points : 1 132
    Points
    1 132
    Par défaut fonction & matrices
    Salut,
    je débute en programmation ( langage C ) ,et je n'arrive pas a comprendre comment pourrais-je rendre une fonction du genre " int exemple(char matrice[][30]); " réutilisable dans mon programme si je doit obligatoirement préciser un des deux paramètres de la taille de la matrice ...sachant que j'ai plusieurs matrice de différentes tailles ...
    j'espère que vous m'avez compris, et que ma question ne sois pas bebete
    et merci
    To start press any key. (reading screen) Where's the "any" key? I see Esc, Catarl, and Pig Up. There doesn't seem to be any "any" key. Wo! All this computer hacking is making me thirsty. I think I'll order a Tab. (presses TAB key). -- HOMER --

  2. #2
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    859
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 859
    Points : 714
    Points
    714
    Par défaut
    j'espère que vous m'avez compris, et que ma question ne sois pas bebete
    Il n'y a pas de question bébête.

    int exemple(char matrice[][30]); " réutilisable dans mon programme si je doit obligatoirement préciser un des deux paramètres de la taille de la matrice
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int exemple(char matrice[][], const unsigned char size1, const unsigned char size2);
    avec size 1: taille pour l'indice 1 et size 2: taille pour l'indice 2
    est-ce que cela irait mieux ?
    size1 et size2 sont des unsigned char -> max 255
    Petite remarque: dans les 2 cas, le tableau est passé par la pile (il va donc prendre de la place sur la pile qui si elle est mal utilisée peut saturer).
    Si tu ne vis pas ce que tu penses alors tu penses ce que tu vis.

  3. #3
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Citation Envoyé par Bayard
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int exemple(char matrice[][], const unsigned char size1, const unsigned char size2);
    Non, ce n'est pas correct. Seule la dimension la plus a gauche peut etre omise.

    Pour pouvoir faire des fonctions reutilisable travaillant avec des tailles differentes, il y a plusieurs solutions:
    * Utiliser un pointeur simple, fournir les dimensions en parametre et calculer les indices a la main.
    * Remplacer les tableaux bidimensionnels en tableau de tableau et passer la encore les dimensions en parametre

  4. #4
    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 Bayard
    Il n'y a pas de question bébête.
    Par contre les réponses... faut voir...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int exemple(char matrice[][], const unsigned char size1, const unsigned char size2);
    Pas du C. Si tu ne connais pas le langage C, c'est pas grave, mais ne te sens pas obligé de répondre, surtout une ânerie...

    Alors écoute et apprends :

    http://www.developpez.net/forums/sho...12&postcount=3
    Pas de Wi-Fi à la maison : CPL

  5. #5
    Membre éprouvé Avatar de orfix
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 707
    Points : 1 132
    Points
    1 132
    Par défaut
    merci a vous deux ... ...je vais choisir la première solution de "gl" a savoir l'utilisation d'un pointeur et l'envoie des tailles comme paramètres c'est la solution la plus adéquate a mon problème ..encore une fois merci..
    Seule la dimension la plus a gauche peut etre omise.
    a ma connaissance ... il suffit d'une des deux taille pas obligatoirement celle de droite ou de gauche ..de toute façon elle sera calculer par le compilateur si on connais deja la taille totale du tableaux...
    exemple : 3 * ... = 12 sa ne peut être que 4... .. je me trompe ..??!!
    ...PS: je ne connais pas encore la notion de pile..DSL..mais merci comme même
    To start press any key. (reading screen) Where's the "any" key? I see Esc, Catarl, and Pig Up. There doesn't seem to be any "any" key. Wo! All this computer hacking is making me thirsty. I think I'll order a Tab. (presses TAB key). -- HOMER --

  6. #6
    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 ssmario2
    a ma connaissance ... il suffit d'une des deux taille pas obligatoirement celle de droite ou de gauche ..de toute façon elle sera calculer par le compilateur si on connais deja la taille totale du tableaux...
    Non, pas du tout. Si quelqu'un d'expérimenté te dit quelque chose,
    Citation Envoyé par gl
    Seule la dimension la plus a gauche peut etre omise.
    ne le jette pas aux orties, surtout d'une façon aussi maladroite et aussi peu vérifiée.

    Si tu veux contester les réponses qu'on te donne, je te conseille de te renseigner sérieusement avant :

    http://www.open-std.org/JTC1/SC22/WG...docs/n1124.pdf

    ou K&R2 Chapitre 5.7
    Pas de Wi-Fi à la maison : CPL

  7. #7
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Citation Envoyé par ssmario2
    Citation Envoyé par gl
    Seule la dimension la plus a gauche peut etre omise.
    a ma connaissance ... il suffit d'une des deux taille pas obligatoirement celle de droite ou de gauche ..de toute façon elle sera calculer par le compilateur si on connais deja la taille totale du tableaux...
    exemple : 3 * ... = 12 sa ne peut être que 4... .. je me trompe ..??!!
    Non ce n'est bien que celle de gauche qui peut etre omise.

    En effet, c'est la seule qui n'est pas utile pour recalculer la position reelle de l'element.
    Soit un tableau de taille N*M (char tab[N][M]), l'element x,y (tab[x][y]) se situe a la position x*M + y, N ne rend pas en compte dans ce calcul.

    En outre lorsqu'un tableau est passe en parametre d'une fonction, celui-ci est converti en pointeur sur le premier element de ce tableau. La notion de taille totale du tableau est alors perdue.

  8. #8
    Membre éprouvé Avatar de orfix
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 707
    Points : 1 132
    Points
    1 132
    Par défaut
    Si quelqu'un d'expérimenté te dit quelque chose,
    Citation:
    gl a écrit :
    Seule la dimension la plus a gauche peut etre omise.
    ne le jette pas aux orties, surtout d'une façon aussi maladroite et aussi peu vérifiée.
    Olalala.... ...se n'étais pas dans mes intentions de contester quoi que ce soit.. désole ...en tout cas j'ai préciser qu'il se pouvait que je me trompe en vous posons la question :
    je me trompe ..??!!
    ...et je me suis effectivement tromper ....et je sais aussi que sur ce forum il y'a beaucoup de programmeurs expérimenter ...je ne suis qu'un novice donc ne prenez pas mes propos comme des contestations du moins pas pour l'instant.. cela dit j'ai trouver la même réponse sur un autre site donc MERCI (ne vous facher pas contre moi).

    P.S:j'ai donner comme exemple : ...matrice[][30]... exprès parce que je ne savais pas pourquoi en pouvait omettre la première valeur ...pour sortir tout sa au clair...
    To start press any key. (reading screen) Where's the "any" key? I see Esc, Catarl, and Pig Up. There doesn't seem to be any "any" key. Wo! All this computer hacking is making me thirsty. I think I'll order a Tab. (presses TAB key). -- HOMER --

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

Discussions similaires

  1. Fonction séparation matrice
    Par ben1015 dans le forum MATLAB
    Réponses: 4
    Dernier message: 29/11/2010, 13h05
  2. Application de fonction à une matrice.
    Par Ambrym dans le forum MATLAB
    Réponses: 1
    Dernier message: 13/10/2010, 11h10
  3. Réponses: 28
    Dernier message: 10/08/2010, 08h14
  4. Fonction et matrice
    Par feynman dans le forum Fortran
    Réponses: 5
    Dernier message: 23/04/2008, 13h47
  5. [Débutant] Fonction sur matrices
    Par scraven dans le forum MATLAB
    Réponses: 4
    Dernier message: 27/04/2007, 09h03

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