elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con tablas bidimensionales!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con tablas bidimensionales!  (Leído 3,874 veces)
lachusta

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Ayuda con tablas bidimensionales!
« en: 15 Septiembre 2011, 01:42 am »

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  :)


En línea

LearningSpanishProgrammer

Desconectado Desconectado

Mensajes: 67


Ver Perfil
Re: Ayuda con tablas bidimensionales!
« Respuesta #1 en: 15 Septiembre 2011, 02:14 am »

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

Código:
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:

Código:
void function(int m[][DIM])
o
Código:
void function(int m[DIM][DIM])


« Última modificación: 15 Septiembre 2011, 02:21 am por LearningSpanishProgrammer » En línea

Estoy aprendiendo español, y tu estas aprendiendo programación
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Ayuda con tablas bidimensionales!
« Respuesta #2 en: 15 Septiembre 2011, 14:52 pm »

Cuando se declara una funcion en la forma:
Código
  1. int fn(char a[]) ...
  2.  
  3. /* O tambien */
  4. int fn(char a[N]) ...

En realidad se procesa como:
Código
  1. int fn(char *a) ...

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

Un saludo
En línea

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
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines