5 votes

Passer la matrice comme argument

Je veux passer deux matrices comme argument. Ces matrices ont des tailles différentes et je ne comprends pas comment je dois faire ce travail :

#include <stdio.h>
#include <stdlib.h>

void f(int m[3][], int n);

int main()
{
  int A[3][3]={{1,2,3},{4,5, 6},{7,8,9}};
  int B[3][2]={{1,2},{3, 4}, {5, 6}};

  f(A, 3);
  f(B, 2);

  return 0;
}

 void f(int m[3][], int n)
 {
    int i,j;
    for(i=0;i<3;i++)
    {
      for(j=0;j<n;j++)
       printf("%5d", m[i][j]);
    }
    return;
 }

Comment puis-je le faire ?

6voto

Dan F Points 11380

Le seul moyen sûr que je connaisse pour faire cela est d'inclure les dimensions de la matrice dans les paramètres, ou de créer une sorte de structure de matrice.

Option A) dimensions en tant que paramètres

void f(int **m, int w, int h )
{
    int i,j;
    for(i=0;i<w;i++)
    {
      for(j=0;j<h;j++)
         printf("%5d", m[i][j]);
    }
    return;
}

Option B) Utiliser une structure

typedef struct Matrix
{
    int w, h;
    int** m;
} Matrix;

void f ( Matrix *m )
{
    for ( int i = 0; i < m->w; ++i )
    {
        for ( int j = 0; j < m->h; ++j )
        {
            printf(%5d", m->m[i][j]);
        }
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X