[langage c]matrice et fonction

lxav Messages postés 189 Statut Membre -  
 Uluqiorra -
Bonjour,
je voudrais savoir comment déclarer une matrice que je veux envoyer dans une fonction.

par exemple pour un vecteur....

on déclare dans le programme principal....
main()
{
int x[21],nb=0;
void FCT(int*,int);
.
.
.

//.... puis on l'utilise en ecrivant

FCT(x,nb);

}
..... et on la code...
void FCT(int x[],int nb)
{
......
}

mais si j'utilise
int x[5][21],nb;
comment puis envoyer totalement la matrice dans la fonction?
( le code en bref)

Merci d'avance ;)
Configuration: Windows XP
Firefox 2.0.0.4

7 réponses

  1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Salut

    int tab[5][10];

    void FCT(int tab[5][10],int nb){
    }

    ou void FCT(int tab[5][], int nb){
    }

    et l'appel : FCT(tab,nb);

    Mais surtout pas : void FCT(int tab[][],int nb);
    Il faut aider le compilateur à savoir le nombre de cases qu'il faut se déplacer pour changer de lignes.

    Si tu veux plus d'explications, n'hésite pas à demander
    1
    1. ekra Messages postés 1873 Statut Membre 342
       
      Bonjour,

      void FCT(int tab[5][], int nb);
      C'est plutôt
      void FCT(int tab[][10],int nb);
      0
  2. eve
     
    bonjour;
    je voudrais savoir comment écrire une matrice incidente en c
    1
  3. lxav Messages postés 189 Statut Membre 71
     
    merci a toi
    et la déclaration dans le programme principal?
    0
  4. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Re
    int tab[5][10]={{0,1,2,3,4,5,6,7,8,9},
                                   {1,2,3,4,5,...},
                                   {4,5,6,...}};
    ou
    
    tab[3][1]=15; /*pour accéder à une seule case*/
    
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lxav Messages postés 189 Statut Membre 71
     
    je voulais dire la déclaration de la fonction.... pas d'une matrice ;)
    0
    1. ekra Messages postés 1873 Statut Membre 342
       
      Il n'y a pas de déclaration dans le programme principal. Tu parles peut-être de l'appel de la fonction ?
      FTC(x,nb);

      Mais bon le plus simple et le plus efficace est une structure.
      0
  7. metalsephiroth
     
    Bonsoir, je tente dans le cadre d'un TP de programation en C d'appeller la fonction suivante mais je ne parviens pas a compiler.
    D'où provient l'erreur ?
    merci d'avance pour vos reponses.

    #include <conio.h>
    #include <stdio.h>
    #include <stdlib.h>
    #define N1=3
    #define N2=3

    //void encodMat1(int*);

    int main(int argc, char *argv[])
    {
    // printf("", );
    //encodMat1(mat1);
    return 0;
    }

    //Remplissage de la premiere matrice--------------------------------------------

    void encodMat1(int *mat)
    {
    int i,j;
    printf("Encodez les elements de la premiere matrice :\n");
    for (i=0;i<N1;i++)
    {
    for (j=0;j<N2;j++)
    {
    printf("ligne %d, colonne %d : ",i+1,j+1);
    scanf("%3d",(mat+i*N1+j));
    }
    }
    }
    0
  8. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Salut

    #define N1 3 au lieu de #define N1=3
    #define N2 3 au lieu de #define N2=3

    #define CONSTANTE CHAINE remplacera avant la compilation l'occurence CONSTANTE par CHAINE, donc dans ton cas, cela remplecera N1 par =3 d'où l'erreur de compilation.

    Cordialement
    0
    1. Uluqiorra
       
      cette écriture et aussi correct ^^ #define N2 3
      0