Programación General > C/C++

 pasar matriz a una funcion (ansi c)

(1/1)

sanlegas2000:
Que tal  mi duda es como pasar una matriz a una funcion, si puedo pasar vectores pero cuando paso una matriz me marca error les dejo el codigo para que lo chequen.
gracias
# include<stdio.h>
void reflejo( int A[100][100], int filas, int columnas)
{
int f,c;
for (f=0;f<3;f++)
{

for (c=3;c>=0;c--)
{
printf("%d ",A[f][c]);
}printf("n");
}

}

void cabeza( int A[100][100], int filas, int columnas)
{
int f,c;
for (f=filas-1;f>=0;f--)
{
for (c=0;c<columnas;c++)
{
printf("%d ",A[f][c]);
}printf("n");
}
}   



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

int filas=3, columnas=4;
//reflejo(A[][],filas,columnas);
//cabeza(A[][],filas,columnas);

//reflejo(A,filas,columnas);

//reflejo(A[100][100],filas,columnas);
//reflejo(A[3][4],filas,columnas);

//reflejo(A[3],[4],filas,columnas);


return 0;
}

czealt:
Tu código funciona con unos pequeños ajustes:

  - Utiliza Matrices con las mismas dimensiones. En la función main() define
    int A[100][00].
  - Al llamar a las funciones solo escribe el nombre de la matriz sin los corchetes [][].
    Ejemplo:  reflejo(A,filas,columnas);
 
Con esas modificaciones programa funciona. Aunque una manera más elegante más elegante de hacerlo
sería definiendo un nuevo tipo con typedef:


--- Código: C ---#define MAXFIL 100#define MAXCOL 100  typedef int MATRIZ[MAXFIL][MAXCOL];  void reflejo( MATRIZ A, int filas, int columnas){  int f,c;    for (f=0;f<filas;f++)  {    for (c=columnas;c>=0;c--)    {      printf("%d ",A[f][c]);    }    printf("n");  }} int main (void){  MATRIZ A={{1,2,3},{4,5,6},{7,8,9},{0,1,2}}; /* Los  { } adicionales son necesarios porque de lo contrario estarias definiendo una matriz inicializando los  12 elementos de su primera fila. */    int filas=3, columnas=4;   reflejo(A,filas,columnas);  cabeza(A,filas,columnas);   return 0;}  

sanlegas2000:
gracias tu repuesta es mas elegante que la que me dieron en otro foro.
problema resuelto

Navegación

[0] Índice de Mensajes

Ir a la versión completa