[C con Clase] Como eliminar filas en una matriz dinamica?

Ali Rincon alrincon1963 en hotmail.com
Dom Dic 22 01:23:20 CET 2013


Hola a todos. A continuacion les envio el programa, en donde se calcula unas combinaciones y luego deseo imponer una condicion muy simple (la cual se explica en el programa) y lo que deseo es ver la matriz que debe quedar:

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

//Matriz15x14Dinamica
/*Programa que calcula las combinaciones de 15 numeros tomados de 14 en 14 y el resultado lo expresa en forma de una matriz 15x14 dinamica*/

//int main()
void main()

{
    int i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14;
    int **mat = NULL;  //Aqui la matriz "mat" se declara como un doble puntero de tipo int, es decir, como un puntero a un puntero.
    int f; // Fila
    int c; // Columna
    int nF = 15; // Número de filas
    int nC = 14; // Número de columnas
    char seguir, siga;

    /*Reserva dinamica de memoria*/

    mat = malloc(nF * sizeof(int *)); //Se reserva memoria para un numero de filas nF de punteros a int.

    //if(!mat)
    if(mat == NULL)
    {
        printf("Memoria insuficiente\n");

        return 1;
    }

   for(f = 0; f < nF; f++) //Este bucle proporciona un bloque de memoria para cada una de las 15 filas de la matriz mat.
   {
       mat[f] = malloc(nC * sizeof(int));
        //if(!mat[f])
        if(mat[f] == NULL)
        {
            printf("Memoria insuficiente\n");

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

            free(mat[c]);
            free(mat);

            return 1;
        }
    }

    /*Calculo de las combinaciones*/

    f = 0;

    for (i1 = 1; i1 <= 15; i1++)
    {
        for (i2 = i1 + 1; i2 <= 15; i2++)
        {
            for (i3 = i2 + 1; i3 <= 15; i3++)
            {
                for (i4 = i3 + 1; i4 <= 15; i4++)
                {
                    for(i5 = i4 + 1; i5 <= 15; i5++)
                    {
                        for (i6 = i5 + 1; i6 <= 15; i6++)
                        {
                            for (i7 = i6 + 1; i7 <= 15; i7++)
                            {
                                for (i8 = i7 + 1; i8 <= 15; i8++)
                                {
                                    for (i9 = i8 + 1; i9 <= 15; i9++)
                                    {
                                        for (i10 = i9 + 1; i10 <= 15; i10++)
                                        {
                                            for (i11 = i10 + 1; i11 <= 15; i11++)
                                            {
                                                for (i12 = i11 + 1; i12 <= 15; i12++)
                                                {
                                                    for (i13 = i12 + 1; i13 <= 15; i13++)
                                                    {
                                                        for (i14 = i13 + 1; i14 <= 15; i14++)
                                                        {
                                                            if ((i1 != i2) && (i1 != i3) && (i1 != i4) && (i1 != i5) &&
                                                                (i1 != i6) && (i1 != i7) && (i1 != i8) && (i1 != i9) &&
                                                                (i1 != i10) && (i1 != i11) && (i1 != i12) && (i1 != i13) &&
                                                                (i1 != i14) && (i2 != i3) && (i2 != i4) && (i2 != i5) &&
                                                                (i2 != i6) && (i2 != i7) && (i2 != i8) && (i2 != i9) &&
                                                                (i2 != i10) && (i2 != i11) && (i2 != i12) && (i2 != i13) &&
                                                                (i3 != i4) && (i3 != i5) && (i3 != i6) && (i3 != i7) &&
                                                                (i3 != i8) && (i3 != i9) && (i3 != i10) && (i3 != i11) &&
                                                                (i3 != i12) && (i3 != i13) && (i4 != i5) && (i4 != i6) &&
                                                                (i4 != i7) && (i4 != i8) && (i4 != i9) && (i4 != i10) &&
                                                                (i4 != i11) && (i4 != i12) && (i4 != i13) && (i4 != i14) &&
                                                                (i5 != i6) && (i5 != i7) && (i5 != i8) && (i5 != i9) &&
                                                                (i5 != i10) && (i5 != i11) && (i5 != i12) && (i5 != i13) &&
                                                                (i5 != i14) && (i6 != i7) && (i6 != i8) && (i6 != i9) &&
                                                                (i6 != i10) && (i6 != i11) && (i6 != i12) && (i6 != i13) &&
                                                                (i6 != i14) && (i7 != i8) && (i7 != i9) && (i7 != i10) &&
                                                                (i7 != i11) && (i7 != i12) && (i7 != i13) && (i7 != i14) &&
                                                                (i8 != i9) && (i8 != i10) && (i8 != i11) && (i8 != i12) &&
                                                                (i8 != i13) && (i8 != i14) && (i9 != i10) && (i9 != i11) &&
                                                                (i9 != i12) && (i9 != i13) && (i9 != i14) && (i10 != i11) &&
                                                                (i10 != i12) && (i10 != i13) && (i10 != i14) && (i11 != i12) &&
                                                                (i11 != i13) && (i11 != i14) && (i12 != i13) && (i12 != i14) &&
                                                                (i13 != i14))
                                                                {
                                                                    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;
                                                                    c = c + 1;
                                                                    mat[f][c] = i7;
                                                                    c = c + 1;
                                                                    mat[f][c] = i8;
                                                                    c = c + 1;
                                                                    mat[f][c] = i9;
                                                                    c = c + 1;
                                                                    mat[f][c] = i10;
                                                                    c = c + 1;
                                                                    mat[f][c] = i11;
                                                                    c = c + 1;
                                                                    mat[f][c] = i12;
                                                                    c = c + 1;
                                                                    mat[f][c] = i13;
                                                                    c = c + 1;
                                                                    mat[f][c] = i14;
                                                                    f = f + 1;
                                                                }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }

    // Mostrar matriz

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

    printf("\nDesea imponer alguna condicion sobre esta matriz (s/n)?: ");
    scanf("%s", &seguir);
    if(siga != 'n')
    {
        for(f = 0; f <=nF; f++)
        {
            for (c=0; c<nC; c++)

            if (mat[f][c] == 1);

            //Como hago aqui para definir una rutina que me permita eliminar las filas que contengan al numero uno y me muestre las filas que no contengan
            //al numero uno, en forma de una matriz 15x14.

        }
    }

    /*Liberacion de memoria*/

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

    //getch();
    //return 0;
}

De verdad, les agradezco altamente toda la colaboracion que me puedan brindar para resolver este problemita.

Muchas gracias de antemano a todos.

Ali Rincon


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