Cool C/C++

Programacion en C/C++

Home Foros
Bienvenido, Invitado
Por favor Identificarse o Registrarse.    Contraseña olvidada?

Matriz Bidimensional Dinamica
(1 viendo) (1) Invitado
AbajoPágina: 1
TEMA: Matriz Bidimensional Dinamica
#217
Matriz Bidimensional Dinamica Creado el día: 27/10/2012 19:42 Karma: 0
Hola a todos. Mi problema anterior lo resolví, y les coloco el código para quien le interese:

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

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");

}
//getchar();
return 0;
}

Ahora tengo el problema de hacerla dinámica, pues tengo una matriz de 17700x6, y el código que he escrito hasta ahora es el siguiente:

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

//Comb6MatrizDin1
/*Programa que calcula las combinaciones de 25 numeros tomados de 6 en 6 y el resultado lo expresa en forma de una matriz 177000x6 dinamica*/

int main()

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

/*Reserva dinamica de memoria para las columnas*/

//mat = (int **)malloc(nF * sizeof(int *));
mat = malloc(nF * sizeof(int *));

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

//mat[f] = (int *)malloc(nC * sizeof(int));
mat[f] = malloc(nC * sizeof(int));
//for(c = 0; c < nC; c++)


/*Calculo de las combinaciones*/

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");
}

/*Liberacion de memoria*/

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

//getchar();
return 0;
}

Pero este programa no corre bien, no arroja ningún valor. Puede alguien ayudarme a encontrar el error, por favor.

Alberto2012
Alberto2012
Navegador Iniciado
Mensajes: 3
graphgraph
Usuario Offline Presiona aquí para ver el perfil de este usuario
El administrador ha deshabilitado la escritura pública.
 
#220
Re: Matriz Bidimensional Dinamica Creado el día: 08/11/2012 12:39 Karma: 1
Checa la siguiente faq:

programacionenc.net/index.php?option=com...eneral&Itemid=41

Ahí se muestra como definir el tamaño de un vector o matriz dinámicamente, incluso se puede redimensionar el tamaño, es decir hacerla más grande si necesitas más elementos
adrianvaca
Administrador
Mensajes: 81
graph
Usuario Offline Presiona aquí para ver el perfil de este usuario
El administrador ha deshabilitado la escritura pública.
El conocimiento es una forma de empezar a ser libre
 
ArribaPágina: 1