:( Vereis, quiero crear un pekeño programilla usando arrays en java (nada de javascript ni cosas de esas) en el que se represente como si fuera la sala de un cine en la que eliges los numeros de butacas k kieres reservar. Si la butaca sta ocupada la representa con una X y si sta libre con una O. Como se haría?
No hace falta el codigo fuente solo necesito la idea, pq no se me ocurre :( aunke el codigo es bienvenido :P
gracias de antemano.
... no entiendo exactamente cuál es el problema. No sé nada de java, pero en pseudocódigo declaras una matriz de carácteres (por ejemplo, la matriz butaca), y haces butaca[j]='O' si está libre y butaca[j]='X' si está ocupada. Para que te liste cuáles están O y cuáles X, haces dos "paras" anidados, es decir,
para n=1 hasta i hacer
para m=1 hasta j hacer
imprime el valor butaca[n][m];
finpara;
finpara;
lo ideal seria una matriz numerica donde 0 sea butaca sin ocupar, y 1 ocupada. de tal forma qe tendrias.
butaca_x[].y[];
aunqe como los cines no suelen ser cuadrados, sino qe tienes laterales, centrales y demas qe te rompen la simetria, lo mejor es un array lineal, ordenado por el numero de butaca.
si el cine esta ordenado por filas, y dentro de cada fila tiene una serie de numero de butaca, entonces si te sirve el array bidimensional.
suerte :ojo:
:D Gracias seryu, se hace asi, pero tiene que ser con una matriz bidimensional y me encuentro con el problema k dices. Los numeros tienen k ir del 1 al 64 (1,2,3...) y las filas en el array las cuenta como 0,1 0,2 0,3... Como podria hacer para k el usuario pida un numero (p ejemplo el 10) y que marke una X en el 1,1 (en este caso).
1 - 2 - 3 - 4 - 5
6 - 7 - 8 - 9 -10
11-12-13-14-15
Quiero la butaca 13
i=13 div 5 = 2
j= 13 mod 5 = 3
Fila 2, columna 3.
butaca[j]=X
:o deberia dar fila 2 columna 2 pq cuenta desde el cero. y como lo has hecho!? mod y div k significa? gracias me stais ayudando mazo.
Citar1 - 2 - 3 - 4 - 5
6 - 7 - 8 - 9 -10
11-12-13-14-15
Quiero la butaca 13
i=13 div 5 = 2
j= 13 mod 5 = 3
Fila 2, columna 3.
butaca[j]=X
son filas de 5 elementos, por eso es div 5.
con la division entera y el resto puedes sacarlo (xqe al ser elementos de un array no te sirve para nada los decimales).
de todas formas si lo piensas se te ocurrira a ti solo.
tengo la butaca 13, pero necesito una i..
13 / 5 (numero butacas) = 2
2 * 5 (numero butacas) = 10
13 - 10 = 3 qe son las butacas de la fila qe buscas...
espero qe asi lo comprendas mejor.
un saludo.
¿Cuentas desde cero? Yo no he contado desde cero. Pongamos el caso del cero.
Columna
Fila 0: 0 1 2 3 4 5
Fila 1: 0 1 2 3 4 5
Fila 2: 0 1 2 3 4 5
Veámoslo como una matriz 3x6 [0..2][0..5]
la i variará de 0 a 2, la j de 0 a 5
Si quiero encontrar la butaca número 7 de la matriz (el primer cero de la segunda fila) tendré que hacer (7 div max_filas_matriz) para sacar la fila que busco (div es el cociente de la división entera) y (7 mod max_columnas_matriz) para sacar la columna que busco (mod es el módulo o resto de la división entera). 7 div 3 = 2 y 7 mod 6 = 1, es decir, fila 2, columna 1. Como hemos comenzado a contar a partir del cero sólo tienes que restarle uno al resultado de cada uno. Fila 1 columna 0.
En resumen.
Posición: [(númeroquebuscas div max_filas_matriz)-1][(númeroquebuscas mod max_columnas_matriz)-1]
En fin, no sé si te he liado más o qué. Más resumido aún, con max_f el número de filas de tu matriz (lo he escrito matrix todo el rato, cagontó) y con max_c el número de columnas de tu matriz, y num el número de butaca que quieres reservar:
butaca[(num div max_f)-1][(num mod max_c)-1]
Gracias, creo k ya lo pillo! decia k contaba desde cero las filas y las columnas pero se arregla restando un 1 al mod. Gracias p todo :P
y al div también, que las filas también empiezan por cero.
nono, solo al mod. En el ejemplo k has puesto t tiene k dar 2,2 y a ti t dió 2,3. :P
Pues no, antes me equivoqué. Me daba 3,3 pero puse 2, 3 porque comencé a contar desde cero, mira si soy inútil. Hay que restarle a los dos.
Me he hecho un lío yo mismo. Fíate de lo segundo que he dicho y no de lo primero. Hay que restarle uno a los dos lados. Dentro de cinco minutos me contradeciré.
Han pasado siete minutos y ya no estoy seguro de que nada de lo que te he dicho esté bien. Si hubiera tratado de elegir el 15 no funcionaría.
Vale, tenías razón tú y mi otro yo. Sólo hay que restarle uno en el mod. Voy a suicidarme un rato.
Edito: tengo que rectificar también la fórmula. Es:
butaca[num div columnas][(num mod columnas) -1]
Mars, no intentes doblar la cuchara, porque la cuchara no existe. XDDDD
Bueno, sólo comentar que en este tipo de situaciones(rejillas 2D) se suele emplear más la construcción:
celdaXY = array[x+width*y]
Esto es más optimo...
Pero tú lo que buscas no es un valor, sino la posición en la matriz en la que asignar ese valor. Si yo te digo que quiero la butaca 12, según tu fórmula no hay manera posible de saber qué valor x e y corresponden a esa butaca 12 (habría que sacarlo de la manera que había expuesto antes). A menos que no te haya entendido bien, claro.
¿A quien estás respondiendo ahora Mars? ¿A mi?
Por si acaso...
Para obtener X,Y de celda..
X=Celda MOD width
Y=(Celda - X)/width
Creo que era así...y con MOD me refiero al resto de la división
Pues es la misma solución a la que había llegado pero en lugar de pensar en una matriz, pensando en un array unidimensional, ¿no?
Pozí :idea: