elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Funcion RecomendarButacas Ayuda!! (Recorrer arrays de arrays)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Funcion RecomendarButacas Ayuda!! (Recorrer arrays de arrays)  (Leído 2,659 veces)
elenfatico

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Funcion RecomendarButacas Ayuda!! (Recorrer arrays de arrays)
« en: 6 Abril 2016, 02:10 am »

Buenas tardes.

Tengo que entregar un proyecto a la universidad y solo me falta una función de todo el proyecto. Llevo con ella varios días y no consigo sacarla.

Se trata que el primer algoritmo mira la Sala de la pelicula desde la mitad hacia arriba, y va por cada fila de derecha a izquierda y por ejemplo si yo le meto a la función que quiero 3 butacas, me recomienda 3 butacas que esten juntas y en la misma fila. Por ejemplo si la sala tiene 10 filas y 9 columnas y quiero 3 butacas, me recomendaria que comprara las entradas (6,9),(6,8) y (6,7), en caso de que esas estuvieran ocupadas, seguiria buscando.

Si toda la parte de arriba de la sala estuviera ocupada, con el segundo algoritmo, miraria la parte inferior de la sala.
Eso es lo que yo he entendido.
Actualmente llevo hecho lo siguiente de la función y no se como seguir:

Código
  1.  
  2. // recomendarButacasContiguas: método que dados un número N de butacas, devuelve un objeto de
  3. // tipo ButacasContiguas que contiene la fila y la columna de la butaca recomendaba con menor
  4. // número de columna, y el número de butacas solicitadas. El algoritmo para obtener las butacas
  5. // recomendadas es el siguiente:
  6. //
  7. // 1. Se buscan las primeras N butacas contiguas libres empezando por la fila (N_FILAS+1)/2 + 1
  8. // y acabando en la fila N_FILAS. Cada fila se recorre empezando por la columna
  9. // N_COLUMNAS y acabando en la columna 1.
  10. // 2. Si en el paso anterior no se encuentran N butacas contiguas libres, se buscan las primeras N
  11. // butacas contiguas libres empezando por la fila (N_FILAS+1)/2 y acabando en la fila 1.
  12. // Cada fila se recorre empezando por la columna N_COLUMNAS y acabando en la columna
  13. //      1.
  14. // Si no existen N butacas libres contiguas en la sala para la propia sesión, se devuelve null. Por
  15. // ejemplo, si tomamos la sala de la figura 2 y buscamos 3 butacas contiguas libres, este algoritmo
  16. // devolverá las butacas (4, 3), (4, 4) y (4, 5).
  17.  
  18. public ButacasContiguas recomendarButacasContiguas(int noButacas){
  19. int n_filas=this.estadoAsientos.length;
  20. int n_columnas=this.estadoAsientos[0].length;
  21. int fila=0;
  22. int columna=0;
  23. boolean compraFinalizada = false;
  24. int asientosRequeridos=0;
  25. ButacasContiguas resultado = new ButacasContiguas (fila, columna, noButacas);
  26.  
  27.  
  28. //1er Algoritmo, recorre las filas desde (n_filas+1)/2+1 HASTA la N_FILAS
  29. for(int i=((n_filas+1)/2)+1; i<n_filas && !compraFinalizada &&asientosRequeridos<noButacas;i++){
  30. for(int j=n_columnas+1; j>=0 &&!compraFinalizada &&asientosRequeridos<noButacas; j--){
  31. if(asientosRequeridos<noButacas){ //Hasta llegar al Numero de butacas que se compra
  32. if(estadoAsientos[i][j]==0){ //Si un asiento esta vacio
  33. asientosRequeridos++; //Se incrementa en 1
  34.  
  35. }
  36. else if(estadoAsientos[i][j]!=0){ //Si no esta libre
  37. asientosRequeridos=0; //No se incrementa y se sigue buscando
  38.  
  39.  
  40. }
  41. }else if(asientosRequeridos==noButacas){ //Si ya se han encontrado todos los asientos
  42. compraFinalizada=true;
  43. }
  44.  
  45.  
  46.  
  47. }
  48.  
  49. }
  50. //2do Algoritmo, recorre las filas desde (n_filas+1)/1 HASTA la Fila1
  51. for(int i=(n_filas+1)/2; i>0 && !compraFinalizada && asientosRequeridos<noButacas ; i--){
  52. asientosRequeridos=0;
  53. for(int j=n_columnas+1; j>0 && !compraFinalizada && asientosRequeridos<noButacas ; j--){
  54. if(asientosRequeridos<noButacas){
  55. if(estadoAsientos[i][j]==0){
  56. asientosRequeridos++;
  57. }else if(estadoAsientos[i][j]!=0){
  58. asientosRequeridos=0;
  59. }
  60. }else if(asientosRequeridos==noButacas){
  61. compraFinalizada=true;
  62. }
  63. }
  64. }
  65. return resultado;
  66.  
  67. }
  68.  
  69.  

El objeto ButacasContiguas (no puedo modificar nada de este objeto) tiene los siguientes atributos y metodos):

Código
  1. package cine;
  2.  
  3. public class ButacasContiguas {
  4.  
  5. private int fila, columna, noButacas;
  6.  
  7. public ButacasContiguas(int fila, int columna, int noButacas) {
  8. this.fila = fila;
  9. this.columna = columna;
  10. this.noButacas = noButacas;
  11. }
  12.  
  13. public int getFila() {
  14. return fila;
  15. }
  16.  
  17. public int getColumna() {
  18. return columna;
  19. }
  20.  
  21. public int getNoButacas() {
  22. return noButacas;
  23. }
  24.  
  25. }
  26.  
  27.  

Y los atributos de Sesion.java que es la clase en la que se tiene que construir la funcion de RecomendarButacasContiguas son:

Código
  1.  
  2. private String hora;
  3. private int asientosDisponibles; //es un entero que indica el número de asientos disponibles en la propia sesión.
  4.  
  5. // es un entero que se incrementa cada vez que se realiza una venta de entradas para la
  6. // propia sesión. Se utiliza para generar identificadores de venta diferentes para cada compra.
  7.  
  8. private int sigIdCompra;
  9.  
  10. // es una matriz de enteros con las mismas dimensiones que la sala asociada a la
  11. // propia sesión, en la que se representan las butacas compradas y las disponibles para la propia
  12. // sesión. Si una butaca en la posición (i, j) está disponible, se guarda un valor 0, y en caso
  13. // contrario, se guarda el identificador de venta asociado a la butaca. Como en una venta se puede
  14. // comprar más de una butaca, podría suceder que en la matriz haya varios identificadores de
  15. // ventas iguales en posiciones contiguas
  16.  
  17. private int [][] estadoAsientos;
  18.  

Espero que puedan ayudarme, gracias :)


« Última modificación: 6 Abril 2016, 02:20 am por elenfatico » En línea

LaiaxanIV

Desconectado Desconectado

Mensajes: 57


Ver Perfil
Re: Funcion RecomendarButacas Ayuda!! (Recorrer arrays de arrays)
« Respuesta #1 en: 6 Abril 2016, 14:27 pm »

Se supone que tu pregutna es como modificar los atributos de la clase Sesion.java? Si es así, lo que tienes que hacer es asignar a estadoAsientos el sigIdCompra a las butacas contguas que has seleccionado y al finalizar, si ha encontrado el nro de butacas incrementarlo. Por otra parte, si encuentras el nro de butacas contiguas, también tendras que decrementar asientosDisponibles.
En el segundo algoritmo, tendrias que recorrer hasta i>= 0 y j>= 0 ya que la COLUMNA1 equivale a la posicion de estadoAsientos[][0].

Lo que no entiendo muy bien es el resultado, ¿tienes que devolver la primera butaca disponible y a partir de noButacas sabrás cuales són? Tienes que devolver tantas butacas como nroButacas?


En línea

50ShadesOfKenyi

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: Funcion RecomendarButacas Ayuda!! (Recorrer arrays de arrays)
« Respuesta #2 en: 7 Abril 2016, 00:44 am »

Viva la fi upm!!! ;-) :rolleyes:
   PD:estoy igual que tu XD
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
"Arrays de clases, pasados como argumento a una funcion"
Programación C/C++
Sauruxum 2 2,468 Último mensaje 28 Octubre 2010, 06:21 am
por Sauruxum
Duda con arrays dentro de arrays « 1 2 »
PHP
Servia 11 6,763 Último mensaje 10 Marzo 2011, 09:04 am
por Servia
RECORRER ARRAYS
PHP
ato2112 2 1,499 Último mensaje 18 Abril 2013, 18:09 pm
por basickdagger
Contar el numero de arrays en una funcion
Programación C/C++
ramona98 1 2,063 Último mensaje 27 Agosto 2013, 12:46 pm
por avesudra
recorrer arrays
Programación C/C++
vivianfes 1 1,511 Último mensaje 9 Marzo 2015, 08:20 am
por eferion
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines