[C con Clase] Matriz Bidimensional Dinamica

Salvador Pozo salvador en conclase.net
Dom Oct 28 19:02:55 CET 2012


El pasado 2012-10-28 01:28:43, Ali Rincon escribió:
 
AR> Hola a todos. Tengo un problema con una matriz bidimensional la cual necesito hacerla dinámica, pues se trata de una matriz de 17700x6. 

Hola, Ali:

Hay dos errores, el número de combinaciones de 25 elementos tomados de 6 en 6 es 177100, no 177000. El programa deja de funcionar cuando se llega al elemento del array 177001.

El otro error es que en el bucle para reservar memoria para cada fila usas el valor nC en lugar de nF.

Además, en previsión de un error al reservar memoria (y más en arrays dinámicos tan grandes), hay que hacer una verificación de errores:

----8<------
    mat = malloc(nF * sizeof(int *));
    if(!mat) {
        printf("Error de memoria\n");
        return 1;
    }
    for(f = 0; f < nF; f++) {
        //mat[f] = (int *)malloc(nC * sizeof(int));
        mat[f] = malloc(nC * sizeof(int));
        if(!mat[f]) {
            printf("Error de memoria\n");
            for(c = 0; c < f; c++) free(mat[c]);
            free(mat);
            return 1;
        }
    }
---8<------

Hasta pronto.

-- 
Salvador Pozo (Administrador)
mailto:salvador en conclase.net


Más información sobre la lista de distribución Cconclase