[C con Clase] Como hago para unir dos codigos?

Ali Rincon alrincon1963 en hotmail.com
Lun Sep 17 02:56:08 CEST 2012


El pasado 2012-09-16 18:13:08, jiptohej escribió:
 
j> Hola Ali:
j> A continuación te muestro el programa principal, en el que puedes ver
j> que he introducido una nueva función:
j> int main(void)
j> {
j>     int N, k;
j>     printf("Introduzca el valor de N: ");
j>     scanf("%d", &N);
j>     printf("Introduzca el valor de k: ");
j>     scanf("%d", &k);
j>     implicitas(N, k);
j>     system("pause");
j> }
j> Como puedes ver la nueva función se denomina implicitas() y es
j> prácticamente igual al código que tu utilizas, si más que eliminar las
j> variables N y k que pasan a ser parámetros de la función.
j> Como puedes ver, de este modo tan sencillo es como se simplifican los
j> programas. Ten siempre en cuenta que los programas deben ser lo más
j> sencillos que sea posible.
j> A continuación te muestro la función quitando las instrucciones que ya
j> conoces (porque las has escrito tu)
j> void implicitas(int N, int k)
j> {
j>     int i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15;
j>     if (k == 2)
j>     {
j>         for (i1 = 1; i1 <= N; i1++)
j>         {
j>             for (i2 = i1 + 1; i2 <= N; i2++)
j>             if (i1 != i2)
j>             printf("[%d %d]\t", i1, i2);
j>         }
j>     }
j>     else
j>     {
j>         if (k == 3)
j>  ...
j> }
j> Por otro lado te comento, creo que como ejercicio puede servirte para
j> aprender, pero tienes que darte cuenta de que tiene que haber un
j> método mucho más sencillo para resolverlo.

Muchisimas gracias, por tu amable respuesta, jiptohej. En efecto debe de haber una forma mas elegante, como tu la sugieres, de hacer la segunda parte del codigo que hice. Pero te confieso que no tengo ninguna idea al respecto. Tu me sugieres que defina una funcion que realice los calculos de la segunda parte, y que la llame al finalizar la primera parte, de manera de hacer el programa mas sencillo. Asi interpreto tu sugerencia. Como soy nuevo en C, las combinaciones de la segunda parte las hice a "fuerza bruta", y salen. Me gustaria saber si conoces alguna manera, más explicita, de generalizar el segundo codigo. No se como "generalizar" los bucles de for. Te comento que en este instante, en que te estoy escribiendo, un amigo me indicó un error en el segundo codigo y es que la proposicion scanf en la linea 55 no debe ir con %c sino con %s pues es una cadena de caracteres donde se asigna. Con esta indicacion, introduje las siguientes sentencias despues de la finalizacion del bucle de do...while:
    printf("\nDesea ver estas combinaciones de manera explicita (s/n)?: ");
    scanf("%s", &siga);
    if(siga != 'n')
    {
     ...
    }
y me corre el programa hermosamente, con los dos codigos juntos en un mismo programa. Ahora, deseo perfeccionar este codigo, como tu me lo sugieres. Pero si puedes, dame una indicacion mas explicita, por favor, si tienes tiempo y esta a tu alcance.

Muchisimas gracias nuevamente, por la atencion prestada.

Muy atentamente,
 
Ali


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