Bi9ox_lda Posted January 13, 2012 Report Share Posted January 13, 2012 Hola comunidad ChileComparte!! les quisiera pedir porfavor si me pueden ayudar con este ejercicio: Se trata sobre la obtencion de informacion de los recorridos licitados del plan transantiago, es un Sistema de informacion de recorridos, se pide implementar un programa java con los siguientes metodos: a) Llenar una matriz de 10x10 con 0 y 1, en forma aleatoria (solo en las posiciones faltantes) b)Metodo PASA(línea,sector): que recibe como parametros una linea y un sector determinado y devuelve un valor booleano TRUE si pasa y un valor FALSE si no pasa la Línea. c)Funcion NUM_LINEAS(sector): que dado un sector devuelve la cantidad de lineas que pasan por este d)Funcion PASAN_POR_AMBOS ( sector_1, sector_2,lineas): que dado dos sectores, devuelva en el arreglo de enteros lineas, los numeros de los recorridos que pasan por ambos sectores e) Crear la clase test que instancie los objetos requeridos y despliegue la informacion solicitada Para tal efecto se cuenta con la siguiente estructura: una matriz RECORRIDOS,de enteros cuyas filas seran la numeracion de las lineas licitadas (100-900), y las columnas los sectores en que se han fraccionado la Capital (500). el contenido de cada celda variará de acuerdo a si pasa o no una linea por el sector asociado, teniendo un 1 para cuando pase y un 0 cuando no... MATRIZ EJEMPLO 510 520 530 540 550 560 570 580 590100 0 0 0 0 1 1 1 0 1200 0 1 1 0 1 1 1 1 0300 1 0 1 1 0 0 0 1 1400 1 0 0 0 1 0 0 1 0500 1 1 0 1 0 0 1 0 1600 1 1 1 0 1 1 1 0 0700 0 1 0 0 0 1 0 1 0800 0 0 0 1 1 0 0 0 1900 1 0 1 1 0 0 0 1 1 GRACIAS DE ANTEMANO! Link to comment Share on other sites More sharing options...
susodicho Posted January 15, 2012 Report Share Posted January 15, 2012 (edited) :mmm: Dos cosas:Esto tendría que ir en Aplicaciones de EscritorioSe supone que tienes que postear lo que llevas hecho De todas formas, para llenar un vector con 0 y 1 aleatorios puedes hacerlo con alguna de estas formas: Random rnd = new Random(); int[] vector = new int[50]; // Método 1 for(i = 0;i < vector.length;i++) vector[i] = rnd.nextInt(2); // Método 2 for(i = 0;i < vector.length;i++) vector[i] = rnd.nextInt() % 2; // Método 3 for(i = 0;i < vector.length;i++) if(rnd.nextInt(30) < 15) vector[i] = 1; else vector[i] = 0; o también puedes hacerlo usando directamente Math.random (no requiere crear un objecto): int[] vector = new int[50]; for(i = 0;i < vector.length;i++) vector[i] = (int)(Math.random() * 2); NOTA: El Método 3 consiste básicamente en elegir un número al azar dentro de un determinado rango (en el ejemplo, es un rango de 30 valores, que van del 0 al 29), y dependiendo si sale un valor que se encuentra en la mitad inferior (0 al 14) o superior (15 al 29) del rango, se le asigna un 0 ó 1. Obviamente, puedes cambiar el rango si así lo prefieres (también habría que cambiar "el valor medio" del rango :tonto: ). En tu caso, para llenar la matriz con 0 y 1, tienes que asignarle valores aleatorios sólo a las posiciones de la segunda fila en adelante y siempre que la columna sea mayor a cero. Yo cacho que en el constructor inicializas la matriz, asignándole los valores a la primera fila y a la primera columna: int[][] recorridos = new int[10][10]; //...etc... for(i = 1;i < 10;i++) recorridos[0][i] = i * 10 + 500; for(i = 1;i < 10;i++) recorridos[i][0] = i * 100; // asignar valores aleatorios y todo eso... Nótese que la posición (0,0) de la matriz no se ocupa, o sea, se podría decir que está "indefinida". En todo caso, mejor asígnale un valor "cualquiera"...porsiaca. Sobre los métodos que reciben como parámetros sectores y/o líneas, tienes que recorrer la primera fila/columna y ver si existe dicho sector/línea, entonces usas la coordenada correspondiente. Por ejemplo, si llamas al método PASA(700,530):Recorres la primera fila buscando el valor 530, lo encuentras en el índice 3Recorres la primera columna buscando el valor 700, lo encuentras en el índice 7Verificas el valor que hay en recorridos[7][3] y devuelves true o false según corresponda Recuerda, siempre empieza buscando desde el índice 1 (sea fila o columna), ya que el índice 0 está "reservado". Una aclaración, yo creo que hay que buscar las coordenadas de las líneas/sectores, aunque se podría pensar que está de más, ya que es bastante obvio que la línea 700 está en la fila 7 y no hay necesidad de buscarla, simplemente habría que dividir por 100. Creo que por eso la matriz incluye información en la primera fila y primera columna, porque podría ser cualquier valor y no necesariamente multiplos de 100 o alguna secuencia fácilmente predecible, como en este caso. Eso es lo que se me ocurre por ahora. Cualquier optimización o arreglo al código que posteé (no, no es "postié" :no: ) corre por tu cuenta :tonto: Edited January 15, 2012 by susodicho Link to comment Share on other sites More sharing options...
Bi9ox_lda Posted January 16, 2012 Author Report Share Posted January 16, 2012 Muchas gracias suso!!! me sirvio de mucho la ayudita que me distes, yo tenia pensado algo parecido, pero el realizarlo me complico demasiado xD Gracias estimado :) Link to comment Share on other sites More sharing options...
AshWilliams Posted January 17, 2012 Report Share Posted January 17, 2012 Se mueve a Aplicaciones de Escritorio PD: Si diste con la solución, pues, posteala y en una de esas ayuda a otro user y recuerda avisar para que se cierre el tema. Saludos :krider: Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now