[C con Clase] Ayuda con el numero de filas de una matriz bidimensional!

Ali Rincon alrincon1963 en hotmail.com
Lun Oct 22 03:25:26 CEST 2012


Hola a todos. Disculpen nuevamente que los moleste con el siguiente problema, pero necesito saber en que me estoy equivocando, y para ello les escribo, pues la opinión de todos Uds. es muy valiosa. El problema es el siguiente: El código que les muestro a continuación, corre perfectamente:

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

//CombArrays4
/*Programa que calcula las combinaciones de 6 números tomados de 4 en 4 y el resultado lo expresa en forma de una matriz 15x4*/

int main()

{
    int i1, i2, i3, i4;
    int f; // Fila
    int c; // Columna
    int nF = 15; // Número de filas
    int nC = 4; // Número de columnas
    int mat[nF][nC];

    f = 0;

    for (i1 = 1; i1 <= 6; i1++)
    {
        for (i2 = i1 + 1; i2 <= 6; i2++)
        {
            for (i3 = i2 + 1; i3 <= 6; i3++)
            {
                for (i4 = i3 + 1; i4 <= 6; i4++)
                {
                    if ((i1 != i2) && (i1 != i3) && (i1 != i4) && (i2 != i3) 
                        &&(i2 != i4) && (i3 != i4))

                    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;
                    f = f + 1;
                }
            }
        }
    }

    // Mostrar matriz

    for (f=0; f<nF; ++f)
    {
        for (c=0; c<nC; ++c)
            printf(" %d ",mat[f][c]);
            printf("\n");
    }
    //getchar();
    return 0;
}
El problema está en que, cuando lo extiendo, por analogía al caso siguiente:


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

//CombArrays25
/*Programa que calcula las combinaciones de 25 números tomados de 6 en 6 y el resultado lo expresa en forma de una matriz 177000x6*/

int main()

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

    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");
    }
    //getchar();
    return 0;
}

Este último código no me corre bien, no me arroja ningún valor. La única diferencia esta en el numero de filas de la matriz la cual se ha incrementado hasta 177000 filas, en el segundo código. La pregunta es simple: Que tiene que ver el hecho que se haya incrementado el numero de filas hasta 177000?? Los valores que manejo son simples numero enteros, naturales de hecho hasta 25. Que pasa aquí con el lenguaje C? Es que no trabaja con matrices con filas superiores a cierto rango?? En el primer código, la matriz se declara como 15x4, por que son 15 las combinaciones de 6 números tomados de 4 en 4, y en el segundo código el razonamiento es similar.

Muy agradecido con todos de antemano, por toda la colaboracion.

Muy atentamente,

Ali Rincon 


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