Java - Ayuda con un par de programas de java

 
Vista:

Ayuda con un par de programas de java

Publicado por Pancho (1 intervención) el 15/03/2007 22:23:48
El problema de Josephus
Consideremos un problema que puede solucionarse en forma directa usando una lista circular. La situación se conoce como el problema de Josephus y trata de un grupo de soldados rodeados por una abrumadora fuerza enemiga. No hay esperanza de victoria sin refuerzos, pero sólo hay un caballo disponible para escapar. Los soldados hacen un pacto para determinar cuál de ellos va a escapar y pedir ayuda. Forman un círculo y se elige un número n de un sombrero. También se elige uno de sus nombres de un sombrero. Iniciando con un soldado cuyo nombre se eligió, empiezan a contar en sentido dextrógiro alrededor del círculo. Cuando la cuenta llega a n, este soldado se retira del círculo y la cuenta vuelve a empezar con el soldado siguiente. El proceso continúa para que cada vez que la cuenta llega a n, se retire otro soldado del círculo. Cualquier soldado retirado del círculo ya no cuenta. El último soldado que queda va a tomar el caballo y escapar. El problema es, dados un número n, el ordenamiento de los soldados en el círculo y el soldado a partir del que comienza la cuenta, determinar el orden en el cual se eliminan los soldados del círculo y cuál soldado escapa.

El ingreso al programa es el número n y una lista de nombres de los soldados, contenidos en una archivo de texto, en el cual la última línea del archivo contiene la palabra "end" que indica el final del archivo. El programa debe imprimir los nombres en el orden en que se eliminan y el nombre del soldado que escapa.

Por ejemplo, suponga que n = 3 y que hay cinco soldados llamados A, B, C, D y E. Contamos tres soldados empezando en A y se elimina C primero. Después empezamos en D y contamos D, E, y otra vez A por lo que el siguiente en eliminarse es A. Después contamos B, D, y E (C ya se eliminó), y finalmente B, D, y B, por lo que D es el que escapa.

Es evidente que una lista circular en la cual cada nodo representa un soldado es una estructura de datos natural para usarse en la solución de este problema. Es posible llegar a cualquier nodo desde cualquier otro contando alrededor del círculo. Para representar el retiro de un soldado del círculo, se suprime un nodo de la lista circular. Por último, cuando sólo queda un nodo en la lista, se determina el resultado.

Un planteamiento del programa podría ser el siguiente:
read(n);
read(name);
while (name != END) {
insertar nombre en la lista circular;
read(name);
} /* fin de while */
while (haya más de un nodo en la lista) {
contar n - 1 nodos en la lista;
imprimir el nombre en el enésimo nodo;
suprimir el enésimo nodo
} /* fin de while */
imprimir el nombre del único nodo en la lista;
Desarrolla esta aplicación considerando el siguiente archivo de datos que serán los soldados que participan en el juego:

Estos datos deben de estar en un archivo de texto, para ser leídos por el programa y ponerlos en una lista circular.

El valor n para saber de cuanto en cuanto contar deberá estar en un TextField.

Si se requieren anexarle mas métodos a la clase Lista que ya tengan programada, usen herencia para no alterar definitivamente la que ya se tenga programada o bien hagan una nueva clase. <reutilizar es mejor>

Waldo Esparza
David Carrasco Ramos
Mariano Sánchez Zendejas
Julio Alonso Ortíz Felix
Victor Gonzalez
Victor Manuel Gardea Martínez
Ezequiel Meléndez Medrano
Karina Eliosa Beltra Pérez
Luis Ortega
Jesús Adrían Camarena Cepeda
Miguel Quintana Valdez
Adrián Humberto Lucero Caballero
Luis Armando Mercado Campos
Jorge Villalobos Rebollosa
Pablo Parra Pérez
Luis Eduardo Flores Ramírez
Edgar Alonso Gonzáles Moncayo
Luis Carlos Alamillo García
Susana Cortés Villalobos
Jorge Iram Sotelo Morales
Diana Gabriela Alejos Loya
Eduardo castro jordán
Alejandro Orozco
David Castañeda Jáquez
Mariel Alexis de la Cruz Vásquez
David Espinoza Nevárez
Alegandro Vega
César Márquez Márquez
Oscar Gabriel Díaz Sepúlveda
Fernando Germán Martínez Fernandez
Mario Humberto Reza Hernandez
Jorge Alejandro Nuñez
Jorge Ricardo Salas Vila
Alfredo Madrid López
Hiram Esparza Hernadez
Waldo Esparza
David Carrasco Ramos
Mariano Sánchez Zendejas
Julio Alonso Ortíz Felix
Victor Gonzalez




SEGUNDO PROBLEMA

Practica de Pilas y filas

Desarrolla una aplicación que pruebe si una frase es un palíndromo, (una frase que se lee igual de izquierda a derecha y de izquierda a derecha, ejemplo: anita lava la tina
otro ejemplo: dabale arroz a la zorra el abad, también hay palabras palíndromos como ana y otto, también hay numero como 1991 ó 2002)

Es evidente que no se deben considerar los signos de puntuación (comas, puntos, signos de admiración o interrogación, etc.) , ni letras acentuadas.

Se requiere un interfase como la siguiente;
un JLabel
un JTextField
un JBotton
y un JTextArea

Resuelve este problema usando una pila y una fila de Characteres y un String que se acceden sus caracteres con el método charAt(i) que te da un char tomando de la posición i del string.

Consulta un tabla de códigos UNICODE para que sepas que caracteres introducir a la pila y fila y cuales no.

EL QUE LOGRE RESOLVERLOS MIL GRACIAS !!!!!!! y ademas es un chingon jeje
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda con un par de programas de java

Publicado por Mario (622 intervenciones) el 16/03/2007 18:32:49
Si esperame los voy a hacer enseguida... <sarcasmo>a que correo te los envio</sarcasmo>

Saludos comunidad open source!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar