[langage c]matrice et fonction

Fermé
lxav Messages postés 189 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 28 juillet 2008 - 8 juin 2007 à 20:50
 Uluqiorra - 13 mai 2011 à 20:37
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 ;)
A voir également:

7 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 840
8 juin 2007 à 21:26
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
ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 342
9 juin 2007 à 18:41
Bonjour,

void FCT(int tab[5][], int nb);
C'est plutôt
void FCT(int tab[][10],int nb);
0
bonjour;
je voudrais savoir comment écrire une matrice incidente en c
1
lxav Messages postés 189 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 28 juillet 2008 71
8 juin 2007 à 21:32
merci a toi
et la déclaration dans le programme principal?
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 840
8 juin 2007 à 23:19
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lxav Messages postés 189 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 28 juillet 2008 71
9 juin 2007 à 16:02
je voulais dire la déclaration de la fonction.... pas d'une matrice ;)
0
ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 342
9 juin 2007 à 18:48
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
metalsephiroth
7 janv. 2008 à 23:04
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
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 840
8 janv. 2008 à 00:58
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
cette écriture et aussi correct ^^ #define N2 3
0