[C con Clase] Una ayuda con arreglos bidimensionales, por favor!

Ali Rincon alrincon1963 en hotmail.com
Sab Oct 20 05:16:31 CEST 2012


Estimado amigo Jose Luis:  Muchas gracias por ayudarme a resolver el ejercicio. Tu codigo es correcto, especialmente la linea 21, f=0; la cual "sacaste" del bucle de for. Excelente paso. Yo solamente le hice una pequeña modificacion, de manera de ver mas claramente la notacion matricial y fue esta:

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

/*Programa que calcula las combinaciones de 3 numeros tomados de 2 en 2 y el resultado lo expresa en forma de una matriz 3x2*/
/*Autor: Jose Luis Torres*/

int main()

{
    int i, j;

    int f ; // Fila

    int c ; // Columna

    const int nF = 3; // Número de filas

    const int nC = 2; // Número de columnas

    int mat[nF][nC];

    f = 0;

    for (i = 1; i <= 3; i++)
    {
        for (j = i + 1; j <= 3; j++)
        {
            if(i != j)
            {
                c = 0;

                    mat[f][c] = i;

                    c = c + 1;

                    mat[f][c] = j;

                    f = f + 1;
            }
        }
    }

    // Mostrar matriz

    for (f=0; f<nF; ++f)
    {
        for (c=0; c<nC; ++c)

            printf(" %d ",mat[f][c]);
            printf("\n");

    }
     
    system("pause");

    return 0;
}

lo cual podrás ver fácilmente. Luego lo extendí para las combinaciones tomadas de 4 en 4, y el código resulto ser, por analogía:

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

//CombArrays4
/*Programa que calcula las combinaciones de 6 numeros 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

    //const int nF = 15; // número de filas

    //const int nC = 4; // número de columnas

    int mat[nF][nC];

    f = 0;

    for (i1 = 20; i1 <= 25; i1++)
    {
        for (i2 = i1 + 1; i2 <= 25; i2++)
        {
            for (i3 = i2 + 1; i3 <= 25; i3++)
            {
                for (i4 = i3 + 1; i4 <= 25; 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;
}
Ambos códigos corren muy bien, Pero cuando lo extendi, aun mas, precisamente a donde quiero llegar:

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

//CombArray15
/*Programa que calcula las combinaciones de 25 numeros tomados de 15 en 15 y expresa estas combinaciones en forma matricial*/

int main()
{
    int i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15;
    int f; // Fila
    int c; // Columna
    int nF = 3268760; // Número de filas
    int nC = 15; // 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++)
                        {
                            for (i7 = i6 + 1; i7 <= 25; i7++)
                            {
                                for (i8 = i7 + 1; i8 <= 25; i8++)
                                {
                                    for (i9 = i8 + 1; i9 <= 25; i9++)
                                    {
                                        for (i10 = i9 + 1; i10 <= 25; i10++)
                                        {
                                            for (i11 = i10 + 1; i11 <= 25; i11++)
                                            {
                                                for (i12 = i11 + 1; i12 <= 25; i12++)
                                                {
                                                    for (i13 = i12 + 1; i13 <= 25; i13++)
                                                    {
                                                        for (i14 = i13 + 1; i14 <= 25; i14++)
                                                        {
                                                            for (i15 = i14 + 1; i15 <= 25; i15++)
                                                            {
                                                                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) && (i1 != i15) && (i2 != i3) && (i2 != i4) && (i2 != i5) && (i2 != i6) &&
                                                                    (i2 != i7) && (i2 != i8) && (i2 != i9) && (i2 != i10) && (i2 != i11) && (i2 != i12) &&
                                                                    (i2 != i13) && (i2 != i14) && (i2 != i15) && (i3 != i4) && (i3 != i5) && (i3 != i6) &&
                                                                    (i3 != i7) && (i3 != i8) && (i3 != i9) && (i3 != i10) && (i3 != i11) && (i3 != i12) &&
                                                                    (i3 != i13) && (i3 != i14) && (i3 != i15) && (i4 != i5) && (i4 != i6) && (i4 != i7) &&
                                                                    (i4 != i8) && (i4 != i9) && (i4 != i10) && (i4 != i11) && (i4 != i12) && (i4 != i13) &&
                                                                    (i4 != i14) && (i4 != i15) && (i5 != i6) && (i5 != i7) && (i5 != i8) && (i5 != i9) &&
                                                                    (i5 != i10) && (i5 != i11) && (i5 != i12) && (i5 != i13) && (i5 != i14) && (i5 != i15) &&
                                                                    (i6 != i7) && (i6 != i8) && (i6 != i9) && (i6 != i10) && (i6 != i11) && (i6 != i12) &&
                                                                    (i6 != i13) && (i6 != i14) && (i6 != i15) && (i7 != i8) && (i7 != i9) && (i7 != i10) &&
                                                                    (i7 != i11) && (i7 != i12) && (i7 != i13) && (i7 != i14) && (i7 != i15) && (i8 != i9) &&
                                                                    (i8 != i10) && (i8 != i11) && (i8 != i12) && (i8 != i13) && (i8 != i14) && (i8 != i15) &&
                                                                    (i9 != i10) && (i9 != i11) && (i9 != i12) && (i9 != i13) && (i9 != i14) && (i9 != i15) &&
                                                                    (i10 != i11) && (i10 != i12) && (i10 != i13) && (i10 != i14) && (i10 != i15) &&
                                                                    (i11 != i12) && (i11 != i13) && (i11 != i14) && (i11 != i15) && (i12 != i13) &&
                                                                    (i12 != i14) && (i12 != i15) && (i13 != i14) && (i13 != i15) && (i14 != i15))

                                                                    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;
                                                                    c = c + 1;
                                                                    mat[f][c] = i15;
                                                                    f = f + 1;

                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }

    // Mostrar matriz

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

el programa no funciona bien,es decir, corre pero no arroja ningún valor, como los dos código anteriores. Te pido si lo puedes mirar y examinar, y darme alguna idea del porqué no da ningún valor, es decir, por que no corre bien.

Muchisimas gracias, amigo por las ayudas que me has brindado,

Muy atentamente,

Ali Rincon.
Venezuela.







El pasado 2012-10-17 17:26:30, jiptohej escribió:
 
j> Entendido, a continuación te muestro un código que lo hace (no utilizo
j> funciones definidas por el usuario)
j> #include <stdio.h>
j> #include <stdlib.h>
j> int main()
j> {
j>     int i, j;
j>     int f ; // fila
j>     int c ; // columna
j>     const int nF = 3; // número de filas
j>     const int nC = 2; // número de columnas
j>     int mat[nF][nC];
j>     f = 0;
j>     for (i = 1; i <= 3; i++)
j>     {
j>         for (j = i + 1; j <= 3; j++)
j>             if(i != j)
j>             {
j>                c = 0;
j>                printf("[%d %d] \n", i , j);
j>                mat[f][c] = i;
j>                c = c + 1;
j>                mat[f][c] = j;
j>                f = f + 1;
j>             }
j>     }
j>     // mostrar matriz
j>     for (f=0; f<nF; ++f)
j>     {
j>         for (c=0; c<nC; ++c)
j>         {
j>             printf("fila:%d columna:%d mat[%d][%d]=%d\n", f, c, f, c,
j> mat[f][c]);
j>         }
j>     }
j>     system("pause");
j>     return 0;
j> }
j> Saludos
j> José Luis
j> El 17 de octubre de 2012 16:58, Ali Rincon <alrincon1963 en hotmail.com>escribió:
j> > No, no es un ejercicio de clase. Es un proyecto de programación que pienso
j> > llevar adelante, y lo estoy haciendo poco a poco. Acuérdate que te dije que
j> > me estoy iniciando. No es mi área de especialización. Pero la necesidad
j> > aquí en Venezuela nos obliga a buscar caminos que nos puedan traer
j> > dividendos económicos extras, pues nuestro país esta devastado
j> > económicamente.
j> >
j> > Te expreso mi gratitud por tu amable ayuda.
j> >
j> > Ali Rincon
j> >
j> >
j> >
j> > El pasado 2012-10-17 10:20:12, jiptohej escribió:
j> >
j> > j> Hola Ali:
j> > j> Espero que no sea un ejercicio de clase, de todas formas te explico cómo
j> > j> puedes hacerlo.
j> > j> Dado que sabes cuál tiene que ser el resultado, lo único que tienes que
j> > j> hacer es definir una matriz para almacenar dicho resultado.
j> > j> Haciéndolo de forma burda, si defines una matriz del siguiente modo:
j> > j>     const int nF = 3; // número de filas
j> > j>     const int nC = 2; // número de columnas
j> > j>     int mat[nF][nC];
j> > j>   lo que tendrías que hacer es almacenar lo siguiente:
j> > j> mat[0][0] = 1; mat[0][1]=2;
j> > j> mat[1][0] = 1; mat[1][1]=3;
j> > j> mat[2][0] = 2; mat[2][1]=3;
j> > j> dado que en cada línea imprimes i y j, puedes ponerlo de este modo:
j> > j> mat[0][0] = i; mat[0][1]=j;
j> > j> mat[1][0] = i; mat[1][1]=j;
j> > j> mat[2][0] = i; mat[2][1]=j;
j> > j> dado que los valores los obtienes el 3 líneas y tienes filas en la
j> > matriz,
j> > j> puedes generalizar lo anterior
j> > j> f=0
j> > j> mat[f][0] = i; mat[f][1]=j;
j> > j> f= f+1;
j> > j> mat[f][0] = i; mat[f][1]=j;
j> > j> f=f+1
j> > j> mat[f][0] = i; mat[f][1]=j;
j> > j> En fín, creo que con esto puedes terminarlo.
j> > j> Saludos
j> > j> José Luis
j> > j> El 17 de octubre de 2012 03:48, Ali Rincon <alrincon1963 en hotmail.com
j> > >escribió:
j> > j> > Hola a Todos. Disculpen mi ignorancia sobre el tema, pero como soy
j> > nuevo
j> > j> > en programacion en C, necesito pedirles ayuda en un ejercicio el cual
j> > no he
j> > j> > podido resolver, y que a lo mejor resulta trivial para algunos de Uds.
j> > j> > Necesito expresar (u obtener) las combinaciones del siguiente codigo:
j> > j> >
j> > j> > #include <stdio.h>
j> > j> > #include <stdlib.h>
j> > j> >
j> > j> > int main()
j> > j> > {
j> > j> > int i, j;
j> > j> >
j> > j> > for (i = 1; i <= 3; i++)
j> > j> > {
j> > j> > for (j = i + 1; j <= 3; j++)
j> > j> > if(i != j)
j> > j> > printf("[%d %d] \n", i , j);
j> > j> > }
j> > j> > return 0;
j> > j> > }
j> > j> >
j> > j> > en forma de un arreglo, es decir, en una matriz 3x2. Al compilar el
j> > j> > ejercicio anterior, la salida que produce es:
j> > j> >
j> > j> > [1 2]
j> > j> > [1 3]
j> > j> > [2 3]
j> > j> >
j> > j> > Necesito que este resultado se exprese en forma de una matriz 3x2, y
j> > no se
j> > j> > hacerlo. O dicho de otra forma, los elementos de la matriz 3x2 deben
j> > ser
j> > j> > los anteriores resultados. Puede alguien ayudarme a resolverlo??
j> > j> >
j> > j> > Muchisimas gracias por la ayuda que me puedan brindar,
j> > j> >
j> > j> > Ali Rincon
j> > j> > _______________________________________________
j> > j> > Lista de correo Cconclase Cconclase en listas.conclase.net
j> > j> >
j> > http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
j> > j> > Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
j> > j> >
j> > j> --
j> > j> José Luis Torre
j> > j> ww.ehu.es
j> > j> _______________________________________________
j> > j> Lista de correo Cconclase Cconclase en listas.conclase.net
j> > j>
j> > http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
j> > j> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
j> > _______________________________________________
j> > Lista de correo Cconclase Cconclase en listas.conclase.net
j> > http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
j> > Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
j> >
j> -- 
j> José Luis Torre
j> ww.ehu.es
j> _______________________________________________
j> Lista de correo Cconclase Cconclase en listas.conclase.net
j> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
j> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ


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