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
Ir a la versión completa