[C con Clase] Matriz Bidimensional Dinamica

Ali Rincon alrincon1963 en hotmail.com
Dom Oct 28 02:28:43 CET 2012


Hola a todos. Tengo un problema con una matriz bidimensional la cual necesito hacerla dinámica, pues se trata de una matriz de 17700x6. El código que he escrito hasta ahora es el siguiente:

#include <stdio.h>
#include <stdlib.h>

//Comb6MatrizDin1
/*Programa que calcula las combinaciones de 25 numeros tomados de 6 en 6 y el resultado lo expresa en forma de una matriz 177000x6 dinamica*/

int main()

{
    int i1, i2, i3, i4, i5, i6;
    int f; // Fila
    int c; // Columna
    int nF = 177000; // Número de filas
    int nC = 6; // Número de columnas
    //int mat[nF][nC];
    int **mat = NULL;

    /*Reserva dinamica de memoria para las columnas*/

    //mat = (int **)malloc(nF * sizeof(int *));
    mat = malloc(nF * sizeof(int *));

    for(f = 0; f < nC; f++)

        //mat[f] = (int *)malloc(nC * sizeof(int));
        mat[f] = malloc(nC * sizeof(int));
        //for(c = 0; c < nC; c++)


    /*Calculo de las combinaciones*/

    f = 0;

    for (i1 = 1; i1 <= 25; i1++)
    {
        for (i2 = i1 + 1; i2 <= 25; i2++)
        {
            for (i3 = i2 + 1; i3 <= 25; i3++)
            {
                for (i4 = i3 + 1; i4 <= 25; i4++)
                {
                    for(i5 = i4 + 1; i5 <= 25; i5++)
                    {
                        for (i6 = i5 + 1; i6 <= 25; i6++)
                        {
                            if ((i1 != i2) && (i1 != i3) && (i1 != i4) && 
                               (i1 != i5) && (i1 != i6) && (i2 != i3) && 
                               (i2 != i4) && (i2 != i5) && (i2 != i6) && 
                               (i3 != i4) && (i3 != i5) && (i3 != i6)&& 
                               (i4 != i5) && (i4 != i6) && (i5 != i6))
                            {
                                c = 0;
                                mat[f][c] = i1;
                                c = c + 1;
                                mat[f][c] = i2;
                                c = c + 1;
                                mat[f][c] = i3;
                                c = c + 1;
                                mat[f][c] = i4;
                                c = c +1;
                                mat[f][c] = i5;
                                c = c + 1;
                                mat[f][c] = i6;
                                f = f + 1;
                            }
                        }
                    }
                }
            }
        }
    }



    // Mostrar matriz

    for (f=0; f<nF; f++)
    {
        for (c=0; c<nC; c++)
            printf(" %d ", mat[f][c]);
            printf("\n");
    }

    /*Liberacion de memoria*/

    for(f = 0; f < nF; f++)
        free(mat[f]);
    free(mat);
    //mat = NULL;

    //getchar();
    return 0;
}

Pero este programa no corre bien, no arroja ningún valor. Puede alguien ayudarme a encontrar el error, por favor.

Ali Rincon


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