• Viernes 15 de Noviembre de 2024, 02:28

Autor Tema:  pasar matriz a una funcion (ansi c)  (Leído 2589 veces)

sanlegas2000

  • Nuevo Miembro
  • *
  • Mensajes: 17
    • Ver Perfil
pasar matriz a una funcion (ansi c)
« en: Miércoles 30 de Diciembre de 2009, 20:02 »
0
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

  • Miembro activo
  • **
  • Mensajes: 28
    • Ver Perfil
Re: pasar matriz a una funcion (ansi c)
« Respuesta #1 en: Jueves 31 de Diciembre de 2009, 20:56 »
0
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
  1. #define MAXFIL 100
  2. #define MAXCOL 100
  3.  
  4. typedef int MATRIZ[MAXFIL][MAXCOL];
  5.  
  6. void reflejo( MATRIZ A, int filas, int columnas)
  7. {
  8.   int f,c;
  9.  
  10.   for (f=0;f<filas;f++)
  11.   {
  12.     for (c=columnas;c>=0;c--)
  13.     {
  14.       printf("%d ",A[f][c]);
  15.     }
  16.     printf("n");
  17.   }
  18. }
  19.  
  20. int main (void)
  21. {
  22.   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. */
  23.  
  24.   int filas=3, columnas=4;
  25.  
  26.   reflejo(A,filas,columnas);
  27.   cabeza(A,filas,columnas);
  28.  
  29.   return 0;
  30. } 
  31.  

sanlegas2000

  • Nuevo Miembro
  • *
  • Mensajes: 17
    • Ver Perfil
Re: pasar matriz a una funcion (ansi c)
« Respuesta #2 en: Viernes 1 de Enero de 2010, 01:50 »
0
gracias tu repuesta es mas elegante que la que me dieron en otro foro.
problema resuelto