Foros del Web » Programación para mayores de 30 ;) » C/C++ »

me atasco en arrays bidimensionales..

Estas en el tema de me atasco en arrays bidimensionales.. en el foro de C/C++ en Foros del Web. Hola. Estoy un poco perdido y necesitaba ayuda con respecto a la declaracion de arryas bidimensionales y al paso en las funciones. Tengo algo similar... ...
  #1 (permalink)  
Antiguo 08/07/2009, 03:42
 
Fecha de Ingreso: julio-2009
Mensajes: 3
Antigüedad: 14 años, 9 meses
Puntos: 0
me atasco en arrays bidimensionales..

Hola. Estoy un poco perdido y necesitaba ayuda con respecto a la declaracion de arryas bidimensionales y al paso en las funciones.

Tengo algo similar...


main (){

int n;


/*quiero que solucion sea un array bidimensional de n x n, y pasarlo por referencia para ir rellenandolo/modificandolo en otras funciones. ¿Como se declararia solución? con un int solucion[n][n] ; valdria o habria que crear una estructura ?



n=longLista(lista); /*funcion que obtiene el valor n*/

HS(lista,solucion);
/* como se pasaria el parametro solucion si quiero que sea modificado en la funcion HS ?*/


-------------------------------------------------------

cabecera de HS

void HS(tLista lista , .... solución) {

/*¿como seria la cabecera de la funcion HS para solucion ?*/

}




no se si me habre explicado bien...


Gracias,

Última edición por David; 10/07/2009 a las 13:09
  #2 (permalink)  
Antiguo 08/07/2009, 07:57
Avatar de FTech  
Fecha de Ingreso: julio-2009
Mensajes: 88
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: me atasco en arrays bidimensionales..

No entendí muy bien... Pero para declararlos:

int matriz[][]={.....};

bool HS(&tabla);

Para llamar a la función:

if(&matriz[i][j]){....;}
else{....;}

Se entiende?
  #3 (permalink)  
Antiguo 08/07/2009, 13:02
 
Fecha de Ingreso: febrero-2004
Ubicación: Buenos Aires
Mensajes: 60
Antigüedad: 20 años, 2 meses
Puntos: 0
Respuesta: me atasco en arrays bidimensionales..

solución se define como un array bidimensional.

int solucion[20][30];

para pasar solución como argumento de una función tenes que declar un puntero a puntero

void HS(....,int **solucion)

Los cambios que hagas en solucion dentro de HS, afectaran a solucion fuera de HS, por que estas pasando la variable por referencia.

Espero que te sirva.
  #4 (permalink)  
Antiguo 09/07/2009, 15:09
 
Fecha de Ingreso: julio-2009
Mensajes: 3
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: me atasco en arrays bidimensionales..

Al final lo estoy intentando hacer como me ha dicho Haidon, pero tengo otras preguntas que van saliendo.

he hecho

int solucion[longitud][longitud];

longitud=longLista(lista); ---->funcion que saca la longitud del array.

HS(lista,**solucion); ----->Aqui me da el siguiente warinig: passing arg 2 of `HS' from incompatible pointer type

¿como se deberia llamar a la funcion HS?


-------------------
la cabecera la he hecho:
void HS(tLista lista, int **solucion);


Gracias
  #5 (permalink)  
Antiguo 10/07/2009, 05:29
 
Fecha de Ingreso: febrero-2004
Ubicación: Buenos Aires
Mensajes: 60
Antigüedad: 20 años, 2 meses
Puntos: 0
Respuesta: me atasco en arrays bidimensionales..

Cuando la declaras

void HS(....,int **solucion)

Cuando la llamas simplemente

HS(.....,solucion)
  #6 (permalink)  
Antiguo 10/07/2009, 11:29
 
Fecha de Ingreso: julio-2009
Mensajes: 3
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: me atasco en arrays bidimensionales..

Estas seguro?
Lo he probado como tu dices y me sigue poneindo el mismo error en la llamada :

HS(lista,solucion);

warinig: passing arg 2 of `HS' from incompatible pointer type


Alguno otra alternativa??

Gracias
  #7 (permalink)  
Antiguo 10/07/2009, 11:53
 
Fecha de Ingreso: febrero-2004
Ubicación: Buenos Aires
Mensajes: 60
Antigüedad: 20 años, 2 meses
Puntos: 0
Respuesta: me atasco en arrays bidimensionales..

No se por que no funciona, proba declarando la memoria de forma dinamica:

int **solucion;
solucion=new int*[10];
for(int i=0;i<10;i++)solucion[i]=new int[5];


y al final del programa

for(int i=0;i<10;i++)delete[] solucion[i];
delete[] solucion;

para liberar la memoria.

Aparentemente para pasar un array bidimensional como argumento tenes que definir la segunda dimension en la declaracion de la funcion
void HS(....,int solucion[][5])

Última edición por haidion; 10/07/2009 a las 12:05
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:27.