[DS] problema con array

hola estoy intentando hacer una matriz y inicializarla despues de su creacion de un modo directo osea de golpe mirar os pongo codigo para que veais a lo que me refiero pero meda error y no se como solucionarlo para no tener que hacerlo dato por dato

int tablero[16][16];
int mapa = 1;

main()
{

if (mapa == 1){
tablero = {{10,12,12,12,12,12,12,12,12,12,12,12},
{10,12,12,12,12,12,12,12,12,12,12,12},
{10,12,12,12,12,12,12,12,12,12,12,12},
{10,12,12,12,12,12,12,12,12,12,12,12},
{10,12,12,12,12,12,12,12,12,12,12,12},
{10,12,12,12,12,12,12,12,12,12,12,12},
{10,12,12,12,12,12,12,12,12,12,12,12},
{10,12,12,12,12,12,12,12,12,12,12,12},
{10,12,12,12,12,12,12,12,12,12,12,12},
{10,12,12,12,12,12,12,12,12,12,12,12},
{10,12,12,12,12,12,12,12,12,12,12,12},
{10,12,12,12,12,12,12,12,12,12,12,12},
{10,12,12,12,12,12,12,12,12,12,12,12},
{10,12,12,12,12,12,12,12,12,12,12,12},
{10,12,12,12,12,12,12,12,12,12,12,12},
{10,12,12,12,12,12,12,12,12,12,12,12}};};
else
{
tablero = {{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}};};
return 0;
}
si lo ago asi error pero si lo inicializo igual pero ala hora de crearlo
funciona no entiendo por que

int tablero[16][16] = {{10,12,12,12,12,12,12,12,12,12,12,12},
{10,12,12,12,12,12,12,12,12,12,12,12},
{10,12,12,12,12,12,12,12,12,12,12,12},
{10,12,12,12,12,12,12,12,12,12,12,12},
{10,12,12,12,12,12,12,12,12,12,12,12},
{10,12,12,12,12,12,12,12,12,12,12,12},
{10,12,12,12,12,12,12,12,12,12,12,12},
{10,12,12,12,12,12,12,12,12,12,12,12},
{10,12,12,12,12,12,12,12,12,12,12,12},
{10,12,12,12,12,12,12,12,12,12,12,12},
{10,12,12,12,12,12,12,12,12,12,12,12},
{10,12,12,12,12,12,12,12,12,12,12,12},
{10,12,12,12,12,12,12,12,12,12,12,12},
{10,12,12,12,12,12,12,12,12,12,12,12},
{10,12,12,12,12,12,12,12,12,12,12,12},
{10,12,12,12,12,12,12,12,12,12,12,12}};
asi ok todo funciona bien podeis ayudarme.
un saludo
Kaltorak.
tablero = {
10,12,12,12,12,12,12,12,12,12,12,12,
10,12,12,12,12,12,12,12,12,12,12,12,
10,12,12,12,12,12,12,12,12,12,12,12,
10,12,12,12,12,12,12,12,12,12,12,12,
10,12,12,12,12,12,12,12,12,12,12,12,
10,12,12,12,12,12,12,12,12,12,12,12,
10,12,12,12,12,12,12,12,12,12,12,12,
10,12,12,12,12,12,12,12,12,12,12,12,
10,12,12,12,12,12,12,12,12,12,12,12,
10,12,12,12,12,12,12,12,12,12,12,12,
10,12,12,12,12,12,12,12,12,12,12,12,
10,12,12,12,12,12,12,12,12,12,12,12,
10,12,12,12,12,12,12,12,12,12,12,12,
10,12,12,12,12,12,12,12,12,12,12,12,
10,12,12,12,12,12,12,12,12,12,12,12,
10,12,12,12,12,12,12,12,12,12,12,12};

Prueba a especificar asi los valores de la tabla

si no prueba con un bucle de carga de matrices, que en posicion columna= 1 y posicion de la fila que tenga el bucle como i tabla[i, 1]= 10 y el resto de variables de posicion tabla[i, z] 12.
hola melime si lo ago de la primera forma me sale este error igual que de mi forma
c:/prueba/source/main.c:15: error: syntax error before '{' token

y la segunda opcion si funcina pero es que en el caso real todos los valores de la matriz original son distintos no es como la que he puesto en el ejemplo y es un coñazo tener que escribir todas las posiciones de la matriz pero bueno me veo haciendolo :)

por cierto se pueden pasar parametros por referncia a una funcion usando las palib es que me da el siguiente error

error: syntax error before '&' token

cuando pongo esto

int CrearMapa (int &TF,int &PPX,int &PPY);

osea lo que hay que poner para pasar parametros por referencia
un saludo
Kaltorak.
La matriz es de 16 x 16 o de 12 x 16???

Declara dos matrices de la segunda forma que indicas (la que si te funciona)

tablero_1[16][16]={ };
tablero_2[16][16]={ };

luego coon un puntero int indicas que mapa usas.

int* tablero;
int mapa=1;

if (mapa==1) {
tablero=tablero_1;
} else {
tablero=tablero_2;
}


Lo de la referencia hay que usar punteros

int CrearMapa (int* TF, int* PPX, int* PPY);
Te da error simplemente porque no se puede. La inicialización con {} sólo puede realizarse en el momento de la declaración del tipo.
hola darlack

yo ahora lo hago usando punteros pero a la hora de que otra persona use la funcion tiene que poner & delante de las variables que quiere pasar y es un coñazo para alguien que no sepa muy bien de que va el tema y quiero hacer una funcion casi universal por eso queria unas referencias para que simplemente se tuviera que usar el nombre de la variable
pero muchas gracias por lo de los punteros.
Con respecto a lo de inicializar las tablas es que tendria que crear 200 matrices y eso se tiene que comer la memoria cosa mala mientras que de la otra manera solo tengo que crear una y cambiar los datos segun haga falta en el juego.

entiendo webez osea que solo me queda el metodo del introducir los datos de uno en uno osea TF[0][0] = 1;TF[0][1] = 10;TF[0][2] = 2; etc..

un saludo
Kaltorak.
Lo de los arrays y pasar punteros no te queda otra. Al fin y el cabo cuando tu haces

int array[10];

array es un puntero (realmente puedes acceder a un array *(array+i) de ese modo). Asi que si usas & se complica igual más.Yo personalmente te recomiendo que a no ser que sea una aplicación extremadamente crítica de rendimiento y si usas c++ te pases a la stl y a los vectores:

std::vector nombre(10); //una dimensión con 10 elementos
std::vector> nombre; //2 dimensiones

con typedef
typedef std::vector vectInt;
typedf std::vector multivectInt;
vectInt nombre; //una dimensión
multivectInt nombre; //dos dimensiones

Y como ventajas,son dinámicos (puedes cambiar su tamaño), tienen funciones para averiguar su tamaño, de búsqueda, copia, inversión, etc.
a parte de lqo eu te han dicho, en tu codigo...

mapa = 1;

main()
{

if (mapa = 1){
tablero = {{10,12,12,12,12,12,12,12,12,12,12,12},
{10,12,12,12,12,12,1



en el if, tienes una asognacion y no una compracion, por si no te habias dado cuenta o algo....
okis gracias por la informacion neopiro es que puse el post a las tantas de la mañana y ya no veia ni las teclas :) ya lo he modificado para que no alla problemas.

otra cosa por si le sirve a alguien el tema de los punteros y las referencias lo he solucionado al final haciendo esas variables globales de esa manera las puedo usar en cualquier parte del programa sin tener que hacer nada especial se que es un mal habito de programacion pero he solucionado el problema rapidamente.
un saludo
Kaltorak.
9 respuestas