Punteros, función que crea una matriz de orden nxm

Estoy programando un jueguecillo con el allegro y necesito hacer una función que me haga una matriz de orden nxm pasándole un puntero "int **tabla" y el orden con "fila" y "col". El tema es que si hago la función sin pasarle el puntero( usando un puntero global) lo hace todo bien, pero pasándole el puntero a la función me da error . Te adjunto el código fuente.
---------- CÓDIGO ---------------------
#include <stdio.h>
#include <stdlib.h>
void tabla( int **tabla, int fila, int col);
main(){
int d1 = 4;
int d2 = 5;
int **a = NULL;
tabla( a, d1, d2);
for( int i = 0; i< d1; i++){
for( int j = 0; j < d2; j++)
printf( " %d" , a[j]);
printf("\n");
}
system("pause");
}
void tabla( int **tabla, int fila, int col){
tabla = new int *[fila];
for( int i = 0; i < col;i++)
tabla = new int [col];
for( int f = 0; f < fila; f++)
for( int c = 0; c<col; c++)
tabla[f][c] = rand()%10;
}
------------------- FIN ---------------
La intención de la función es crear un array de orden nxm en cualquier momento de ejecución, si puedes dime en donde meto la pata porque creía que tenia bastante superado el tema de los punteros.

1 respuesta

Respuesta
1
#include <stdio.h>
#include <stdlib.h>
void tablas( int ***tabla, int fila, int col);
main(){
int d1 = 4;
int d2 = 5;
int **a;
int i,j;
tablas( &a, d1, d2);
for( i = 0; i< d1; i++) {
for( j = 0; j < d2; j++) printf( " %d" ,a[j]);
printf("\n");
}
system("pause");
}
void tablas( int ***tabla, int fila, int col){
int i, f,c;
*tabla = (int **) malloc( sizeof(int)*fila);
for ( i = 0; i < col;i++)
(*tabla) = (int *) malloc( sizeof(int)*col);
for( f = 0; f < fila; f++)
for( c = 0; c<col; c++) (*tabla)[f][c] = rand()%10;
}

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas