Ayuda con tablas bidimensionales!

Iniciado por lachusta, 15 Septiembre 2011, 01:42 AM

0 Miembros y 1 Visitante están viendo este tema.

lachusta

Hola, mi duda surge mientras hacia un examen de programación. El caso es que el ejercicio pedía calcular el determinante de una matriz cuadrada de orden DIM (tabla bidimensional declarada como: int matriz [DIM][DIM] ). DIM es una constante simbólica.
La matriz se pasaba a una función determinante ejemplo : printf("Determinante de matriz: %d\n", determinante(matriz))

En la declaración de la funcion determinante que sería lo correcto;
¿int determinante (int matriz[ ][DIM] ); o
int determinante (int * matriz); sabiendo que una tabla bidimensional se almacena en memoria por filas y usando notación de punteros con 2 indices? ¿Por qué?

Graciass! espero respuesta  :)

LearningSpanishProgrammer

#1
Se quieres usar una matriz en el 'stack' y usar el metodo para diferentes tamaños, entonces tiene que hacer asi:


void function(int * m, int lineas, size_t columnas)
{
 int i = 0;
 int j = 1;
 m[i*columnas + j] = 5;
}

int main()
{
 int a1[10][20];
 int a2[40][30];

 function(&a1[0][0], 10, 20);
 function(&a2[0][0], 40, 30);
}


en el caso de que se puede usar la asignación dinámica, enton puede leer esto: http://foro.elhacker.net/programacion_cc/duda_con_arreglo_bidimensional_dinamico_en_ide_devc-t337905.0.html;msg1658904#msg1658904

Finalmente, se el tamaño de el matriz es constante em tiempo de compilación, entonces se puede:


void function(int m[][DIM])

o

void function(int m[DIM][DIM])
Estoy aprendiendo español, y tu estas aprendiendo programación

rir3760

Cuando se declara una funcion en la forma:
int fn(char a[]) ...

/* O tambien */
int fn(char a[N]) ...


En realidad se procesa como:
int fn(char *a) ...

Es por ello que indicar el numero de elementos en el array (el parametro "a") no es necesario.

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language