C/Visual C - Arreglos Bidimensionales

 
Vista:

Arreglos Bidimensionales

Publicado por Alejo (1 intervención) el 09/09/2001 07:07:57
Hay algun metodo para hacer que un arreglo bidimensional se genere durante el programa, o sea que el usuario especifique las dimensiones del arreglo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Arreglos Bidimensionales

Publicado por Ismael (230 intervenciones) el 09/09/2001 10:14:06
Creo que se pueden emplear dos modos:
a) Definir el array mediante punteros. Una vez que, en tiempo de ejecución, se conozcan sus dimensiones, se hace una reserva dinámica de memoria (malloc()). si te interesa este método, mandame un mail y te digo como lo puedes hacer. Es elegante, pero tienes que dominar los punteros
b) Definir el array sobredimensionado:
. . .
int mi_array[100][100];
. . .
for(i=0; i<20; i++)
for(j=0; j<30; j++)
mi_array[i][j] = i+j;

. . .
Declaro un array de 100x100 y luego limito el tamaño a 20x30, llenado cada elamanto del array con la suma de su fila y columna
Es un deroche de memoria ya que emplea 100x100x2 bytes de los cuales sonlo vamos a utilizar 30x20x2... pero en los PC actuales eso no es problema.
El resto de posiciones del array permanecerán con ceros o valores basura, segu´n como la declaremos. Esto hay que tenerlo en cuenta a la hora de imprimir el array.
Espero que te sirva
Un saludo

Ismael
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Arreglos Bidimensionales

Publicado por Emilio (42 intervenciones) el 09/09/2001 14:44:45
ejemplo:

int *a;
int size=3 ;//por ejemplo es de 3 * 3
a=(int*)malloc(sizeof(int)*(size*size));

//ejemplo : poner en el lugar 2,2 el valor de 5
int i=2,j=2;

*(a+(i+j*size))=5 ;

de esta manera puedes llegar a cualquier lugar del arreglo : (i+j*size)
pudes usar por ejemplo:

for(int i=0;i<size;i++)
for(int j=0;j<size;j++)
{
*(a+(i+j*size)=1;
}

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar