Ordenacion y Busqueda

Hola a todos.

Esta es mi primera entrada en este portal y estoy estudiando Java, pero soy novato en esto. Tengo una duda espantosa, ya que no sé como hacerle para realizar esta actividad, espero y alguien me pueda apoyar, gracias.

La pregunta es esta:

Las antiguas patentes (de automóviles), por ejemplo PL7812, están compuestas por un string de dos caracteres, en el ejemplo PL, y por un número entero de cuatro dígitos, en el ejemplo 7812. Suponga que exista una clase Patente y otra TablaDePatentes de la siguiente forma:

 

La idea es que TablaDePatentes almacena en el atributo tabla todas las patentes autorizadas a estacionarse en el campus San Joaquín.

Lo primero que se pide es declarar el método como nos indican en el enunciado. Luego, con los métodos de la clase Patente, obtenemos las letras y los números que la componen. Con el número de la patente obtenemos lo almacenado en el arreglo y luego debemos recorrer este String obteniendo Substring de largo 2 e ir comparando cada substring con las letras de la patente a buscar. Si coincide con alguno retornamos true, de lo contrario retornamos false.

Posible solución:

 

Mi problema es que no sé que tengo que hacer, ni donde poner las cosas que se me pide, espero su apoyo.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de iocio

SOLUCION

Buenas noches Gildardo, no he podido contestarte antes porque no me terminaba de dar de alta el moderador. Vamos por partes.
Los arrays (o arreglos) son un tipo de lista basico en Java donde se almacena un tipo de dato primitivo o definido por el usuario, en tu caso, en cada posicion guardaras algo de tipo Patente. Por lo tanto la definicion correcta seria algo tipo Patente[ ] listaPatentes = new Patente[9999]; (Luego te copio todo el codigo, no te preocupes). Luego es tan sencillo como iterar por toda la tabla en busca de la parte que coincida con las letras, y si es asi buscar si coincide con el numero. Si no pasar a la siguiente y en caso de coincidir, salir del bucle al tener ya la respuesta. La clase patente quedaria tal que:
 
Y la clase TablaDePatentes quedaria:
 
Al comparar la cadena de caracteres utilizo el metodo .equals() porque el metodo == compara el objeto al que apunta en si, no si los caracteres son iguales. En tu caso debes usar .equals() para el string y == para el int. Si tienes cualquier duda comentame, pero no tienes porque utilizar substrings al tener los numeros y las letras en variables separadas ok??

Espero haberte ayudado,

Un saludo.

Imagen de iocio

Optimizacion de la solucion

Los dos if dentro del for los he dejado separados para que lo veas mas claro, pero podria valer igual de bien sustituyendolo por esto:

 

Un saludo amigo ;)

Imagen de Josh G

Como hacer la prueba

Discupa mi ignorancia, soy novato en esto tambien ando viendo el mismo tema pero mi pregunta es una vez ya escrito este codigo como puedo hacer la prueba de que funciona? ya sea desde main o un Frame pues al llamar el metodo buscar me manda error estoy seguro que estoy haciendolo mal de eso no cabe duda dejo lo poco que llevo.

llamo a a las clases.

Patente p = new Patente();
TablaPatentes tp = new TablaPatentes();

y en el evento del boton:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
String lt,nm;
lt = p.obtLetras();
lt = txtLetras.getText();
nm = Integer.toString(p.obtNumero());
nm = txtNum.getText();
tp.buscar();
}

hago mencion que a la clase tablapatenes le agrege JOptionPane para False "nohay datos " y true "El dato existe"

y pues obiamente siempre me lanzara que no se encuentra el dato por que no ingreso valores pero ni eso me manda jeje.

Por su atencion muchas gracias....

Imagen de iocio

No te preocupes...

Eso es porque no has ingresado ninguna Patente en el array. y por tanto te dara un error de NullPointerException al encontrarse con el array vacio de tamaño 9999.
Para ello haremos el array de tamaño 2, es decir posiciones 0 y 1 y añadiremos dos patentes manualmente en el main de tal modo (te lo hago en modo consola).

Me acabo de dar cuenta que te faltaba un constructor Patente con el que poder trabajar
 

Aqui te faltaba un getTabla para que pudieras trabajar con ella desde otra clase
 

Y una clase PRINCIPAL
 

Y aqui te dejo ya los problemas solucionados.

Imagen de iocio

CONSEJO

Antes de añadir paneles y botones, probad con el modo consola que os salga todo OK. Tenéis que aprender a modularizar vuestro trabajo al igual en lo que se basa la orientación a objetos. Poco a poco y aprended a usar el DEBUGGER que sera de mucha utilidad. Yo utilizo eclipse como entorno de desarrollo y si bien es cierto que al principio cuesta un poco, os resolverá muchos problemas.

Imagen de Josh G

Gracias....

No me queda mas que agradecerte por la ayuda estoy seguro que esta informacion le va a servir a muchos, y espero algun dia poder apoyar a esta comunidad resolviendo los problemitas que llegan a presentar.

Una vez reitero mi agradecimiento por haber ilustrado la solucion al problema y por aqui andaremos.......

Imagen de gildardo

Muchas gracias

Agradezco mucho tu valioso apoyo ya que sin él no le hubiera entendido al problema planteado, te doy las gracias por el tiempo que te has invertido en contestarme y a la solución y realización de este problema, soy un novato en este lenguaje y me gustaría poder saber en dónde o con quien puedo tomar clases para poder comprender y entender más a fondo este lenguaje.

Sin ustedes no somos nada, ya que para las personas que apenas comenzamos es un valioso apoyo este foro.

Espero poder contar contigo en otra ocasión y te mando mi correo gildardov@gmail.com (esperando el tuyo también) para poderte enviar el código y que puedas corroborar que estuve bien en el desarrollo de esta actividad.

Te envío un fraternal saludo.

Gil

Imagen de gildardo

Ordenacion y Busqueda

Saludos amigo, el día de hoy me dejaron realizar el siguiente programa:

Implemente un programa que busque la mayor distancia entre un grupo de puntos e identifique los puntos que están a la mayor distancia encontrada.

Para esto pida al usuario el número de puntos a utilizar y luego cree cada uno de los puntos.

 

Luego de la ejecución su programa debe mostrar un mensaje como el siguiente:

La mayor distancia en el conjunto de puntos es 1058.91295913645 e involucra al punto 0: (10.920578500052901,15.64305239454644) y al punto 4: (644.0265655345464,864.4501354282548)

Yo realicé la siguiente estructura pero no sé si estoy bien, aunque corre el programa no me muestra los resultados pedidos, espero y me puedas ayudar, muchas gracias de antemano.

 

Ordenación y Busqueda

Hola que tal yo también tengo que resolver este problema y como tu también soy nuevo en esto de java espero nos podamos apoyar para poder resolverlo mira esto es lo que tengo .

package punto;

 

A la hora de llamar al método donde se realiza la operacion desde el metodo distancia para mostrar el resultado desde me marca error al querer asignar una variable a la formula desde el método main y al llamar al metodo toString al correr el programa me manda los puntos en blanco ojala pudieran decirme donde esta el error ya que creo que nada mas falta eso para poder ejecutar el programa correctamente, cualquier cosa que quieran aportar se los agradeceré mucho

Imagen de neko069

Oh god, Why?

....para mostrar el resultado desde me marca error al querer ....

Porqué no pegan su stacktrace? u_u

Imagen de CuicaJavier

Recordar

Se se les hace recordar que su codigo lo publiquen entre code y /code dentro de <>

Imagen de gildardo

Saludos

Te envio lo que llevo, aunque en las dos clases me marcan todavía errores, espero poderlos resolver porque todavía aún no me queda.

Clase Principal Main

 

Y la Clase Punto

 

Investigando y experimentando

Investigando y experimentando un poco encontré el resultado

 

Al correr el programa recuerda cuando te pide ingresar las coordenadas de los punto pones los valores serados por comillas por ejemplo

JOptionPane.showInputDialog("CAPTURA LAS COORDENADAS DEL PRIMER PUNTO");

tu vas a capturar el valor de la siguiente manera :

7,5

donde
7 es x
5 es y

resolviendo este ejercicio me doy cuenta que me faltan muchas cosas por entender de Java

te dejo esta pagina: donde lo explican de manera mas sencilla para entenderlo mejor

Saludos y espero que te sea útil .

Imagen de gildardo

Hola

Te agradezco tu información y ya vi que efectivamente corre, si te puedo ayudar en algo no dudes en pedirmelo, tengo una duda?, estudias en la UNAD?

Saludos.

Así es me encuentro

Así es me encuentro estudiando en la UnAD jaja que coincidencia ya se me hacia raro lo del problema Saludos.

Imagen de gildardo

Hola

Ok ya somos dos, te mando mi correo por si necesitas algo en lo que te pueda ayudar, Saludos. gildardov@gmail.com

Imagen de Josh G

Solo como comentario

Compañeros creo que su solucioon es erronea lo unico que hace es calcular la distancia entre dos puntos, pero en ningun momento estan usando metodos de ORDENACION Y BUSQUEDA ya que segun su enunciado la finalidad es "\\Buscar la mayor distancia en un conjunto de puntos" mas no mostrar la distancia entre 2 puntos.....

Imagen de gildardo

Hola

Pues te comento, tienes toda la razón, pero si te das cuenta y si ingresas los datos que requieres veras que te de la distancia que se solicita, porque te comento que no sé nada de java (apenas le estoy medio entendiendo), y es la única forma que obtuve (gracias a un compañero) de realizar el ejercicio solicitado.

Si estas en la UNAD (que me imagino que sí), te comento que la actividad ya fué enviada, aceptada y aprobada por el maestro, pero la última palabra la tienes tú.

Saludos.

Hola compañeros yo también

Hola compañeros yo también soy estudiante de la UNAD, y soy nueva en lo que es programación en JAVA. por favor podrían asesorarme con algunos ejemplo, totorales, paginas web, donde pueda aprender mas , gracias por su ayuda.

Saludos

Ya realize el proyecto tal cual lo indica el usuario que nos mostro pero no me da ningun resultado

Me podrias ayudar

Hola ya realize el proyecto y

Hola ya realize el proyecto y corre al 100% haciendo lo que pide la instruccion pero....

Mi profesor me dice lo siguente (absurdo que quiera cambiar lo que se nos indico al principio pero bueno)...

El programa debe solicitar al usuario el número de puntos a utilizar, es decir, el usuario va a capturar un número cualquiera y el programa debe generar aleatoriamente esa cantidad de puntos.

Por ejemplo, si el usuario capturó el número 7, tu programa debe generar aleatoriamente 14 valores (entre 0 y 1000) para esos 7 puntos que serían las coordenadas X y Y de cada punto (imaginando un plano cartesiano). Posteriormente, debe calcular las distancias entre cualquier par de puntos (de los siete) e identificar con un mensaje final cuál distancia es la mayor.

Te sugiero que antes del mensaje que indique la distancia mayor el programa muestre los puntos generados.

Me podras ayudar porfavor? pollo_paco@hotmail.com