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

Ali Rincon alrincon1963 en hotmail.com
Mie Oct 17 16:20:23 CEST 2012


Muchas gracias, estimado Luis. Voy a estudiar tu código y ver si me sirve. Espero que si. No dudes que te tendré en cuenta para futuras dudas y proyectos en programación C.

De nuevo te expreso, mi gratitud por tu gentileza de responder.

Ali Rincón.


El pasado 2012-10-17 03:58:52, Luis Pedro Mendez escribió:
 
LPM> Hola estimada ali, aquí te dejamos un código que quizás pueda servirte y te
LPM> genera una matriz de 3 filas por dos 2 columnas.
LPM> -----------------------------------------------------------------------------------------
LPM> /*
LPM> * Código desarrollado por Elinv.
LPM> * http://www.bragadomas.com/forodeprogramacion/index.php
LPM> * http://www.bragadomas.com
LPM> * http://www.bragadomas.com.ar
LPM> * http://luispedromendez.blogspot.com/
LPM> * http://elinv-elinv.blogspot.com/?expref=next-blog
LPM> */
LPM> #include <stdio.h>
LPM> #include <iostream>
LPM> using namespace std;
LPM> //Variable array auxiliar
LPM> int Auxiliar[100];
LPM> //Variable array para imprimir las permutas
LPM> int imprime[100];
LPM> //Variable array contiene las sustituciones
LPM> //Aquí el cero es inamovible pero el resto puede cambiarlo por
LPM> //numeros de varias cifras o letras e inclusive puede aumentar
LPM> //el tamaño del array...
LPM> int numeros[4]= {1,2,3};
LPM> //Variables para la cantidad de digitos  a analizar
LPM> //y la cantidad de combinaciones o columnas que se mostrarán.
LPM> int digitos_analiza, cantidad_columnas_muestra;
LPM> //Variable para informar cuantas combinaciones se lograron.
LPM> int cuantos=0;
LPM> //Procedimiento para imprimir
LPM> void print()
LPM> {
LPM> //Variable para el bucle
LPM> int i;
LPM> //Hasta la cantidad de combinaciones o columnas deseadas.
LPM> for (i=1; i<=cantidad_columnas_muestra; ++i)
LPM> {
LPM> //Imprimimos el valor de cada elemento de imprime
LPM> printf(" -%d- ", imprime[i]);
LPM> }
LPM> printf("\t\t");
LPM> for (i=1; i<=cantidad_columnas_muestra; ++i)
LPM> {
LPM> //Aquí sustituimos por los valores ingresdos por el usuario
LPM> printf("%d\t", numeros[imprime[i]]);
LPM> }
LPM> printf("\t\t");
LPM> for (i=1; i<=cantidad_columnas_muestra; ++i)
LPM> {
LPM> //Aquí vemos el funcionamiento de la matriz Auxiliar despues de cada ciclo
LPM> printf("%d ", Auxiliar[i]);
LPM> }
LPM> //salto de linea para la siguiente combinación
LPM> printf("\n");
LPM> }
LPM> //Procedimiento recursivo para las permutas
LPM> void combinar(int n, int k)
LPM> {
LPM> //si el valor de las columnas a mostrar es igual a cero
LPM> if (k==0)
LPM> {
LPM> print();        //Llama a la función imprimir
LPM> cuantos++;
LPM> //Aumenta en mas 1 el contador de ciclos
LPM> }
LPM> //Caso contrario
LPM> else
LPM> {
LPM> int i;
LPM> //Define variable
LPM> for (i=1; i<=n; ++i)
LPM> {
LPM> if (Auxiliar[i]==1) //Si el array Auxiliar en ese indice es igual a uno
LPM> {
LPM> Auxiliar[i]= 0;
LPM> //Ponemos ese elemento del array Auxiliar a cero
LPM> imprime[k]= i;
LPM> //Asignamos al array imprime indice de las columnas a mostrar el valor de i
LPM> combinar(n, k-1);//llamamos recursivamente a la misma función combinar con
LPM> k menos 1 (columnas a mostrar menos 1)
LPM> Auxiliar[i]= 1;
LPM> //Auxiliar en ese indice le reasignamos 1
LPM> }
LPM> }
LPM> }
LPM> }
LPM> int main(void)
LPM> {
LPM> int i;
LPM> digitos_analiza=3;
LPM> //Cantidad de digitos a combinar
LPM> cantidad_columnas_muestra=2;
LPM> //Columnas que mostrará
LPM> //Llenamos con valor 1 el array -Auxiliar-
LPM> for (i=1; i<=digitos_analiza; ++i)
LPM> {
LPM> Auxiliar[i]= 1;
LPM> }
LPM> //Titulos
LPM> printf("Orden de la combinacion\tResultado\n");
LPM> printf("-----------------------\t---------\n");
LPM> //Llamamos a la función para combinar y enviamos parámetros.
LPM> combinar(digitos_analiza, cantidad_columnas_muestra);
LPM> //Vamos cerrando.
LPM> printf("-----------------------\t---------\n");
LPM> //Informamos los ciclos que se han utilizado.
LPM> printf("Total de ciclos: %d ", cuantos);
LPM> printf("\n");
LPM> //Esperamos por una pulsación de tecla.
LPM> getchar();
LPM> }
LPM> ---------------------------------------------------------------------------------------------------
LPM> El código lo hemos adaptado míninamente para tus necesidades, pero puedes
LPM> verlo en nuestro blog --> aqui
LPM> http://todocporelinv.blogspot.com.ar/2011/04/combinaciones-de-numeros-letras-todas.html
LPM> Si te ha servido, no te olvides de visitar e resto de nuestros artículos
LPM> como así a nuestros sponsor para ayudar al sostenimiento.
LPM> Invita a quienes conozcas a visitarnos.
LPM> Gracias
LPM> Cualquier duda por favor nos tienes en cuenta.
LPM> Atentamente.
LPM> Elinv.
LPM> El 16 de octubre de 2012 22:48, Ali Rincon <alrincon1963 en hotmail.com>escribió:
LPM> > Hola a Todos. Disculpen mi ignorancia sobre el tema, pero como soy nuevo
LPM> > en programacion en C, necesito pedirles ayuda en un ejercicio el cual no he
LPM> > podido resolver, y que a lo mejor resulta trivial para algunos de Uds.
LPM> > Necesito expresar (u obtener) las combinaciones del siguiente codigo:
LPM> >
LPM> > #include <stdio.h>
LPM> > #include <stdlib.h>
LPM> >
LPM> > int main()
LPM> > {
LPM> > int i, j;
LPM> >
LPM> > for (i = 1; i <= 3; i++)
LPM> > {
LPM> > for (j = i + 1; j <= 3; j++)
LPM> > if(i != j)
LPM> > printf("[%d %d] \n", i , j);
LPM> > }
LPM> > return 0;
LPM> > }
LPM> >
LPM> > en forma de un arreglo, es decir, en una matriz 3x2. Al compilar el
LPM> > ejercicio anterior, la salida que produce es:
LPM> >
LPM> > [1 2]
LPM> > [1 3]
LPM> > [2 3]
LPM> >
LPM> > Necesito que este resultado se exprese en forma de una matriz 3x2, y no se
LPM> > hacerlo. O dicho de otra forma, los elementos de la matriz 3x2 deben ser
LPM> > los anteriores resultados. Puede alguien ayudarme a resolverlo??
LPM> >
LPM> > Muchisimas gracias por la ayuda que me puedan brindar,
LPM> >
LPM> > Ali Rincon
LPM> > _______________________________________________
LPM> > Lista de correo Cconclase Cconclase en listas.conclase.net
LPM> > http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
LPM> > Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
LPM> >
LPM> _______________________________________________
LPM> Lista de correo Cconclase Cconclase en listas.conclase.net
LPM> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
LPM> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ


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