Browse Source

Cleanup code.

master
Chris Cromer 5 years ago
parent
commit
49f0064d49
  1. 999
      src/cl/cromer/estructuras/Array.java
  2. 60
      src/cl/cromer/estructuras/ArrayController.java
  3. 67
      src/cl/cromer/estructuras/BurbujaController.java
  4. 84
      src/cl/cromer/estructuras/Cola.java
  5. 31
      src/cl/cromer/estructuras/ColaController.java
  6. 35
      src/cl/cromer/estructuras/HashTable.java
  7. 64
      src/cl/cromer/estructuras/InsercionController.java
  8. 251
      src/cl/cromer/estructuras/ListaEnlazdaController.java
  9. 156
      src/cl/cromer/estructuras/MenuController.java
  10. 64
      src/cl/cromer/estructuras/MergeController.java
  11. 84
      src/cl/cromer/estructuras/Pila.java
  12. 31
      src/cl/cromer/estructuras/PilaController.java
  13. 64
      src/cl/cromer/estructuras/QuickController.java
  14. 70
      src/cl/cromer/estructuras/SeleccionController.java
  15. 72
      src/cl/cromer/estructuras/ShellController.java

999
src/cl/cromer/estructuras/Array.java

File diff suppressed because it is too large

60
src/cl/cromer/estructuras/ArrayController.java

@ -7,7 +7,6 @@ import javafx.scene.layout.VBox;
import javafx.scene.text.Text;
import java.net.URL;
import java.util.Random;
import java.util.ResourceBundle;
import java.util.Scanner;
import java.util.logging.Level;
@ -85,19 +84,32 @@ public class ArrayController implements Initializable {
initializeArray();
}
Random random = new Random();
int maximo = 99;
int minimo = 0;
int rango = maximo - minimo + 1;
array.llenar();
generarGrafico();
}
for (int i = array.size(); i < 10; i++) {
int numero = random.nextInt(rango) + minimo;
while (array.buscar(numero) != -1) {
numero = random.nextInt(rango) + minimo;
}
array.insertar(numero);
/**
* Crear el array de tamaño 10. La scene está usado para saber si es de tipo ordenado o simple segun el ménu.
*/
private void initializeArray() {
scene = contenidoArray.getScene();
grafico = new Grafico(scene);
this.array = new Array(10);
ArrayTipos arrayTipos = (ArrayTipos) scene.getUserData();
if (arrayTipos.getTipo() == ArrayTipos.ORDENADO) {
this.array.setOrdered(true);
}
}
/**
* Poner los valores en el grafico.
*/
private void generarGrafico() {
grafico.removerDestacar();
for (int i = 0; i < 10; i++) {
Text text = (Text) scene.lookup("#texto_" + String.valueOf(i));
text.setText(array.getIndice(i));
}
generarGrafico();
}
/**
@ -235,28 +247,4 @@ public class ArrayController implements Initializable {
Main.mostrarError(resourceBundle.getString("arrayNoValor"), resourceBundle);
}
}
/**
* Crear el array de tamaño 10. La scene está usado para saber si es de tipo ordenado o simple segun el ménu.
*/
private void initializeArray() {
scene = contenidoArray.getScene();
grafico = new Grafico(scene);
this.array = new Array(10);
ArrayTipos arrayTipos = (ArrayTipos) scene.getUserData();
if (arrayTipos.getTipo() == ArrayTipos.ORDENADO) {
this.array.setOrdered(true);
}
}
/**
* Poner los valores en el grafico.
*/
private void generarGrafico() {
grafico.removerDestacar();
for (int i = 0; i < 10; i++) {
Text text = (Text) scene.lookup("#texto_" + String.valueOf(i));
text.setText(array.getIndice(i));
}
}
}

67
src/cl/cromer/estructuras/BurbujaController.java

@ -3,14 +3,10 @@ package cl.cromer.estructuras;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.Scene;
import javafx.scene.control.ButtonBar;
import javafx.scene.control.ButtonType;
import javafx.scene.control.Dialog;
import javafx.scene.layout.HBox;
import javafx.scene.text.Text;
import java.net.URL;
import java.util.Random;
import java.util.ResourceBundle;
import java.util.Scanner;
@ -54,6 +50,7 @@ public class BurbujaController implements Initializable {
* @param resourceBundle ResourceBundle: Tiene datos de idioma.
*/
@Override
@SuppressWarnings("Duplicates")
public void initialize(URL location, ResourceBundle resourceBundle) {
this.resourceBundle = resourceBundle;
@ -61,21 +58,12 @@ public class BurbujaController implements Initializable {
Colores colores = new Colores();
Random random = new Random();
int maximo = 99;
int minimo = 0;
int rango = maximo - minimo + 1;
array = new Array(10);
array.setOrdered(true);
array.llenar();
for (int i = 0; i < 10; i++) {
int numero = random.nextInt(rango) + minimo;
while (array.buscar(numero) != -1) {
numero = random.nextInt(rango) + minimo;
}
array.insertar(numero);
contenidoBurbuja.getChildren().addAll(Grafico.crearCaja(colores, String.valueOf(i), String.valueOf(numero)));
contenidoBurbuja.getChildren().addAll(Grafico.crearCaja(colores, String.valueOf(i), String.valueOf(array.getIndice(i))));
colores.siguinteColor();
}
}
@ -89,22 +77,26 @@ public class BurbujaController implements Initializable {
initializeScene();
}
array = new Array(10);
array.setOrdered(true);
array.nuevo();
array.llenar();
generarGrafico();
}
Random random = new Random();
int maximo = 99;
int minimo = 0;
int rango = maximo - minimo + 1;
for (int i = array.size(); i < 10; i++) {
int numero = random.nextInt(rango) + minimo;
while (array.buscar(numero) != -1) {
numero = random.nextInt(rango) + minimo;
}
array.insertar(numero);
/**
* Crear el array de tamaño 10.
*/
private void initializeScene() {
scene = contenidoBurbuja.getScene();
}
/**
* Poner los valores en el grafico.
*/
private void generarGrafico() {
for (int i = 0; i < 10; i++) {
Text text = (Text) scene.lookup("#texto_" + String.valueOf(i));
text.setText(array.getIndice(i));
}
generarGrafico();
}
/**
@ -146,21 +138,4 @@ public class BurbujaController implements Initializable {
generarGrafico();
}
/**
* Crear el array de tamaño 10.
*/
private void initializeScene() {
scene = contenidoBurbuja.getScene();
}
/**
* Poner los valores en el grafico.
*/
private void generarGrafico() {
for (int i = 0; i < 10; i++) {
Text text = (Text) scene.lookup("#texto_" + String.valueOf(i));
text.setText(array.getIndice(i));
}
}
}

84
src/cl/cromer/estructuras/Cola.java

@ -1,5 +1,7 @@
package cl.cromer.estructuras;
import java.util.Random;
/**
* Crear una estructura de dato de tipo cola.
*
@ -24,39 +26,6 @@ final public class Cola {
size = 0;
}
/**
* Devolver la cantidad de elementos que están en la cola.
*
* @return int: La cantidad de elementos.
*/
public int size() {
return size;
}
/**
* Push un valor en la cola encima.
*
* @param valor int: El valor a push.
*/
public void push(int valor) {
if (this.cola != null) {
String cola[] = new String[this.cola.length + 1];
int i;
for (i = 0; i < this.cola.length; i++) {
cola[i] = this.cola[i];
}
cola[i] = String.valueOf(valor);
this.cola = cola;
size++;
}
else {
String pila[] = new String[1];
pila[0] = String.valueOf(valor);
this.cola = pila;
size++;
}
}
/**
* Pop un valor del principio de la cola.
*
@ -90,6 +59,15 @@ final public class Cola {
}
}
/**
* Devolver la cantidad de elementos que están en la cola.
*
* @return int: La cantidad de elementos.
*/
public int size() {
return size;
}
/**
* Devolver el valor que está en un indice de la cola.
*
@ -104,4 +82,44 @@ final public class Cola {
return null;
}
}
/**
* Llenar la cola con valores al azar.
*/
@SuppressWarnings("Duplicates")
public void llenar() {
Random random = new Random();
int maximo = 99;
int minimo = 0;
int rango = maximo - minimo + 1;
for (int i = size(); i < 10; i++) {
int numero = random.nextInt(rango) + minimo;
push(numero);
}
}
/**
* Push un valor en la cola encima.
*
* @param valor int: El valor a push.
*/
public void push(int valor) {
if (this.cola != null) {
String cola[] = new String[this.cola.length + 1];
int i;
for (i = 0; i < this.cola.length; i++) {
cola[i] = this.cola[i];
}
cola[i] = String.valueOf(valor);
this.cola = cola;
size++;
}
else {
String pila[] = new String[1];
pila[0] = String.valueOf(valor);
this.cola = pila;
size++;
}
}
}

31
src/cl/cromer/estructuras/ColaController.java

@ -7,7 +7,6 @@ import javafx.scene.layout.VBox;
import javafx.scene.text.Text;
import java.net.URL;
import java.util.Random;
import java.util.ResourceBundle;
import java.util.Scanner;
import java.util.logging.Level;
@ -87,16 +86,19 @@ public class ColaController implements Initializable {
grafico = new Grafico(scene);
}
Random random = new Random();
int maximo = 99;
int minimo = 0;
int rango = maximo - minimo + 1;
cola.llenar();
generarGrafico();
}
for (int i = cola.size(); i < 10; i++) {
int numero = random.nextInt(rango) + minimo;
cola.push(numero);
/**
* Poner los valores en el grafico.
*/
private void generarGrafico() {
grafico.removerDestacar();
for (int i = 0; i < 10; i++) {
Text text = (Text) scene.lookup("#texto_" + String.valueOf(i));
text.setText(cola.getIndice(i));
}
generarGrafico();
}
/**
@ -201,15 +203,4 @@ public class ColaController implements Initializable {
Main.mostrarError(resourceBundle.getString("colaVacia"), resourceBundle);
}
}
/**
* Poner los valores en el grafico.
*/
private void generarGrafico() {
grafico.removerDestacar();
for (int i = 0; i < 10; i++) {
Text text = (Text) scene.lookup("#texto_" + String.valueOf(i));
text.setText(cola.getIndice(i));
}
}
}

35
src/cl/cromer/estructuras/HashTable.java

@ -19,6 +19,7 @@ public class HashTable {
* @param string String: El string a hashear.
* @return int: El hash a devolver.
*/
@SuppressWarnings("unused")
public int hashMejor(String string) {
int intLength = string.length() / 4;
int sum = 0;
@ -41,22 +42,6 @@ public class HashTable {
return (Math.abs(sum) % tamano);
}
/**
* Este metodo crea un hash usando una llave.
* @param string String: El string a hashear.
* @return int: El hash a devolver.
*/
public int hash(String string) {
int hash = 31;
for (int i = 0; i < string.length(); i++) {
hash = hash * 31 + string.charAt(i);
}
if (hash < 0) {
hash = hash * -1;
}
return hash % tamano;
}
public boolean insertar(String llave, int valor) {
HashItem hashItem = new HashItem(llave, valor);
int hashIndice = hash(hashItem.getLlave());
@ -80,6 +65,24 @@ public class HashTable {
}
}
/**
* Este metodo crea un hash usando una llave.
*
* @param string String: El string a hashear.
*
* @return int: El hash a devolver.
*/
public int hash(String string) {
int hash = 31;
for (int i = 0; i < string.length(); i++) {
hash = hash * 31 + string.charAt(i);
}
if (hash < 0) {
hash = hash * - 1;
}
return hash % tamano;
}
public boolean eliminar(String llave) {
HashItem hashItem = new HashItem(llave, 0);
int hashIndice = hash(hashItem.getLlave());

64
src/cl/cromer/estructuras/InsercionController.java

@ -7,7 +7,6 @@ import javafx.scene.layout.HBox;
import javafx.scene.text.Text;
import java.net.URL;
import java.util.Random;
import java.util.ResourceBundle;
import java.util.Scanner;
@ -51,6 +50,7 @@ public class InsercionController implements Initializable {
* @param resourceBundle ResourceBundle: Tiene datos de idioma.
*/
@Override
@SuppressWarnings("Duplicates")
public void initialize(URL location, ResourceBundle resourceBundle) {
this.resourceBundle = resourceBundle;
@ -58,21 +58,12 @@ public class InsercionController implements Initializable {
Colores colores = new Colores();
Random random = new Random();
int maximo = 99;
int minimo = 0;
int rango = maximo - minimo + 1;
array = new Array(10);
array.setOrdered(true);
array.llenar();
for (int i = 0; i < 10; i++) {
int numero = random.nextInt(rango) + minimo;
while (array.buscar(numero) != -1) {
numero = random.nextInt(rango) + minimo;
}
array.insertar(numero);
contenidoInsercion.getChildren().addAll(Grafico.crearCaja(colores, String.valueOf(i), String.valueOf(numero)));
contenidoInsercion.getChildren().addAll(Grafico.crearCaja(colores, String.valueOf(i), String.valueOf(array.getIndice(i))));
colores.siguinteColor();
}
}
@ -86,22 +77,26 @@ public class InsercionController implements Initializable {
initializeScene();
}
array = new Array(10);
array.setOrdered(true);
array.nuevo();
array.llenar();
generarGrafico();
}
Random random = new Random();
int maximo = 99;
int minimo = 0;
int rango = maximo - minimo + 1;
for (int i = array.size(); i < 10; i++) {
int numero = random.nextInt(rango) + minimo;
while (array.buscar(numero) != -1) {
numero = random.nextInt(rango) + minimo;
}
array.insertar(numero);
/**
* Crear el array de tamaño 10.
*/
private void initializeScene() {
scene = contenidoInsercion.getScene();
}
/**
* Poner los valores en el grafico.
*/
private void generarGrafico() {
for (int i = 0; i < 10; i++) {
Text text = (Text) scene.lookup("#texto_" + String.valueOf(i));
text.setText(array.getIndice(i));
}
generarGrafico();
}
/**
@ -143,21 +138,4 @@ public class InsercionController implements Initializable {
generarGrafico();
}
/**
* Crear el array de tamaño 10.
*/
private void initializeScene() {
scene = contenidoInsercion.getScene();
}
/**
* Poner los valores en el grafico.
*/
private void generarGrafico() {
for (int i = 0; i < 10; i++) {
Text text = (Text) scene.lookup("#texto_" + String.valueOf(i));
text.setText(array.getIndice(i));
}
}
}

251
src/cl/cromer/estructuras/ListaEnlazdaController.java

@ -126,14 +126,57 @@ public class ListaEnlazdaController implements Initializable {
}
/**
* Vaciar la lista de todos los valores.
* Crear una lista vacia.
*/
@FXML
protected void botonVaciar() {
if (scene == null) {
initializeLista();
private void initializeLista() {
scene = contenidoLista.getScene();
grafico = new Grafico(scene);
listaEnlazadaTipos = (ListaEnlazadaTipos) scene.getUserData();
nuevaLista();
}
/**
* Poner los valores en el grafico.
*/
private void generarGrafico() {
grafico.removerDestacar();
colores = new Colores();
contenidoLista.getChildren().clear();
contenidoListaCircular.getChildren().clear();
if (listaEnlazadaTipos.getTipo() != ListaEnlazadaTipos.CIRCULAR) {
for (int i = 0; i < listaEnlazada.size(); i++) {
Enlace enlace = listaEnlazada.getIndice(i);
if (listaEnlazada.getTipo() == ListaEnlazadaTipos.SIMPLE) {
dibujarSimple(enlace, false);
}
else if (listaEnlazada.getTipo() == ListaEnlazadaTipos.DOBLEMENTE_ENLAZADA) {
if (i != listaEnlazada.size() - 1) {
dibujarDoble(enlace, (i == 0));
}
else {
dibujarSimple(enlace, false);
}
}
colores.siguinteColor();
}
}
else {
for (int i = 0; i < listaEnlazadaCircular.size(); i++) {
Enlace enlace = listaEnlazadaCircular.getIndice(i);
dibujarSimple(enlace, (i == listaEnlazadaCircular.size() - 1));
colores.siguinteColor();
}
if (listaEnlazadaCircular.size() > 0) {
contenidoListaCircular.getChildren().addAll(Grafico.crearLineaCircular(listaEnlazadaCircular.size()));
}
}
}
/**
* Crear una nueva lista enlazada.
*/
private void nuevaLista() {
if (listaEnlazadaTipos.getTipo() != ListaEnlazadaTipos.CIRCULAR) {
listaEnlazada = new ListaEnlazada();
listaEnlazada.setTipo(listaEnlazadaTipos.getTipo());
@ -142,6 +185,57 @@ public class ListaEnlazdaController implements Initializable {
listaEnlazadaCircular = new ListaEnlazadaCircular();
listaEnlazadaCircular.setTipo(ListaEnlazadaTipos.SIMPLE);
}
}
/**
* Dibujarlo con una flecha.
*
* @param enlace Enlace: El enlace que tiene la llave y valor.
* @param sinFlecha boolean: Verdad si necesita dibujar una flecha.
*/
private void dibujarSimple(Enlace enlace, boolean sinFlecha) {
contenidoLista.getChildren().addAll(
Grafico.crearCaja(colores, String.valueOf(enlace.getLlave()), String.valueOf(enlace.getLlave()))
);
if (! sinFlecha) {
contenidoLista.getChildren().addAll(
Grafico.crearLineaVertical(),
Grafico.crearFlechaAbajo()
);
}
}
/**
* Dibujarlo con dos flechas.
*
* @param enlace Enlace: El enlace que tiene la llave y valor.
* @param primer boolean: Verdad si es el primer elemento de la lista.
*/
private void dibujarDoble(Enlace enlace, boolean primer) {
if (primer) {
contenidoLista.getChildren().addAll(
Grafico.crearFlechaArriba(),
Grafico.crearLineaVertical()
);
}
contenidoLista.getChildren().addAll(
Grafico.crearCaja(colores, String.valueOf(enlace.getLlave()), String.valueOf(enlace.getLlave())),
Grafico.crearFlechaArriba(),
Grafico.crearLineaVertical(),
Grafico.crearFlechaAbajo()
);
}
/**
* Vaciar la lista de todos los valores.
*/
@FXML
protected void botonVaciar() {
if (scene == null) {
initializeLista();
}
nuevaLista();
generarGrafico();
}
@ -154,20 +248,7 @@ public class ListaEnlazdaController implements Initializable {
initializeLista();
}
String tipo;
switch (listaEnlazadaTipos.getTipo()) {
case ListaEnlazadaTipos.SIMPLE:
tipo = "Simple";
break;
case ListaEnlazadaTipos.CIRCULAR:
tipo = "Circular";
break;
case ListaEnlazadaTipos.DOBLEMENTE_ENLAZADA:
tipo = "Doble";
break;
default:
tipo = "Simple";
}
String tipo = getTipoString();
// Mostrar el codigo
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/listaEnlazada" + tipo + "/insertar")).useDelimiter("\\Z").next();
@ -201,15 +282,7 @@ public class ListaEnlazdaController implements Initializable {
}
}
/**
* Eliminar un valor de la lista si existe y mostrar el codigo en la pantalla.
*/
@FXML
protected void botonEliminar() {
if (scene == null) {
initializeLista();
}
private String getTipoString() {
String tipo;
switch (listaEnlazadaTipos.getTipo()) {
case ListaEnlazadaTipos.SIMPLE:
@ -224,6 +297,19 @@ public class ListaEnlazdaController implements Initializable {
default:
tipo = "Simple";
}
return tipo;
}
/**
* Eliminar un valor de la lista si existe y mostrar el codigo en la pantalla.
*/
@FXML
protected void botonEliminar() {
if (scene == null) {
initializeLista();
}
String tipo = getTipoString();
// Mostrar el codigo
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/listaEnlazada" + tipo + "/eliminar")).useDelimiter("\\Z").next();
@ -267,20 +353,7 @@ public class ListaEnlazdaController implements Initializable {
initializeLista();
}
String tipo;
switch (listaEnlazadaTipos.getTipo()) {
case ListaEnlazadaTipos.SIMPLE:
tipo = "Simple";
break;
case ListaEnlazadaTipos.CIRCULAR:
tipo = "Circular";
break;
case ListaEnlazadaTipos.DOBLEMENTE_ENLAZADA:
tipo = "Doble";
break;
default:
tipo = "Simple";
}
String tipo = getTipoString();
// Mostrar el codigo
String codigoTexto = new Scanner(getClass().getResourceAsStream("/cl/cromer/estructuras/code/listaEnlazada" + tipo + "/buscar")).useDelimiter("\\Z").next();
@ -315,98 +388,4 @@ public class ListaEnlazdaController implements Initializable {
Main.mostrarError(resourceBundle.getString("listaNoValor"), resourceBundle);
}
}
/**
* Crear una lista vacia.
*/
private void initializeLista() {
scene = contenidoLista.getScene();
grafico = new Grafico(scene);
listaEnlazadaTipos = (ListaEnlazadaTipos) scene.getUserData();
if (listaEnlazadaTipos.getTipo() != ListaEnlazadaTipos.CIRCULAR) {
listaEnlazada = new ListaEnlazada();
listaEnlazada.setTipo(listaEnlazadaTipos.getTipo());
}
else {
listaEnlazadaCircular = new ListaEnlazadaCircular();
listaEnlazadaCircular.setTipo(ListaEnlazadaTipos.SIMPLE);
}
}
/**
* Poner los valores en el grafico.
*/
private void generarGrafico() {
grafico.removerDestacar();
colores = new Colores();
contenidoLista.getChildren().clear();
contenidoListaCircular.getChildren().clear();
if (listaEnlazadaTipos.getTipo() != ListaEnlazadaTipos.CIRCULAR) {
for (int i = 0; i < listaEnlazada.size(); i++) {
Enlace enlace = listaEnlazada.getIndice(i);
if (listaEnlazada.getTipo() == ListaEnlazadaTipos.SIMPLE) {
dibujarSimple(enlace, false);
}
else if (listaEnlazada.getTipo() == ListaEnlazadaTipos.DOBLEMENTE_ENLAZADA) {
if (i != listaEnlazada.size() - 1) {
dibujarDoble(enlace, (i == 0));
}
else {
dibujarSimple(enlace, false);
}
}
colores.siguinteColor();
}
}
else {
for (int i = 0; i < listaEnlazadaCircular.size(); i++) {
Enlace enlace = listaEnlazadaCircular.getIndice(i);
dibujarSimple(enlace, (i == listaEnlazadaCircular.size() - 1));
colores.siguinteColor();
}
if (listaEnlazadaCircular.size() > 0) {
contenidoListaCircular.getChildren().addAll(Grafico.crearLineaCircular(listaEnlazadaCircular.size()));
}
}
}
/**
* Dibujarlo con una flecha.
*
* @param enlace Enlace: El enlace que tiene la llave y valor.
* @param sinFlecha boolean: Verdad si necesita dibujar una flecha.
*/
private void dibujarSimple(Enlace enlace, boolean sinFlecha) {
contenidoLista.getChildren().addAll(
Grafico.crearCaja(colores, String.valueOf(enlace.getLlave()), String.valueOf(enlace.getLlave()))
);
if (!sinFlecha) {
contenidoLista.getChildren().addAll(
Grafico.crearLineaVertical(),
Grafico.crearFlechaAbajo()
);
}
}
/**
* Dibujarlo con dos flechas.
*
* @param enlace Enlace: El enlace que tiene la llave y valor.
* @param primer boolean: Verdad si es el primer elemento de la lista.
*/
private void dibujarDoble(Enlace enlace, boolean primer) {
if (primer) {
contenidoLista.getChildren().addAll(
Grafico.crearFlechaArriba(),
Grafico.crearLineaVertical()
);
}
contenidoLista.getChildren().addAll(
Grafico.crearCaja(colores, String.valueOf(enlace.getLlave()), String.valueOf(enlace.getLlave())),
Grafico.crearFlechaArriba(),
Grafico.crearLineaVertical(),
Grafico.crearFlechaAbajo()
);
}
}

156
src/cl/cromer/estructuras/MenuController.java

@ -61,6 +61,38 @@ public class MenuController extends VBox implements Initializable {
);
}
/**
* Cargar el fxml, css y titulo.
*
* @param title String: El titulo de la escena.
* @param fxml String: El archivo de fxml.
* @param css String: El archivo de css.
* @param object Object: El objeto a pasar a la nueva escena.
*/
private void loadStage(String title, String fxml, String css, Object object) {
Scene scene = menuBar.getScene();
Stage stage = (Stage) scene.getWindow();
openFXML(fxml, scene, stage);
scene.getStylesheets().add(css);
scene.setUserData(object);
stage.setScene(scene);
stage.setTitle(this.resourceBundle.getString("titulo") + " - " + title);
}
private void openFXML(String fxml, Scene scene, Stage stage) {
try {
Parent parent = FXMLLoader.load(getClass().getResource(fxml), this.resourceBundle);
scene.setRoot(parent);
}
catch (IOException exception) {
// Este error es fatal, hay que cerrar la aplicación.
Logs.log(Level.SEVERE, "No se pudo abrir el archivo de fxml.");
stage.close();
}
}
/**
* Click en Array Ordenado.
*/
@ -87,6 +119,24 @@ public class MenuController extends VBox implements Initializable {
);
}
/**
* Cargar el fxml, css y titulo.
*
* @param title String: El titulo de la escena.
* @param fxml String: El archivo de fxml.
* @param css String: El archivo de css.
*/
private void loadStage(String title, String fxml, String css) {
Scene scene = menuBar.getScene();
Stage stage = (Stage) scene.getWindow();
openFXML(fxml, scene, stage);
scene.getStylesheets().add(css);
stage.setScene(scene);
stage.setTitle(this.resourceBundle.getString("titulo") + " - " + title);
}
/**
* Click en Inserción.
*/
@ -254,6 +304,32 @@ public class MenuController extends VBox implements Initializable {
}
}
/**
* Cargar el fxml y css.
*
* @param fxml String: El archivo de fxml.
* @param css String: El archivo de css.
* @param resourceBundle ResourceBundle: El idioma nuevo para cambiarlo.
*/
private void loadStage(String fxml, String css, ResourceBundle resourceBundle) {
Scene scene = menuBar.getScene();
Stage stage = (Stage) scene.getWindow();
try {
Parent parent = FXMLLoader.load(getClass().getResource(fxml), resourceBundle);
scene.setRoot(parent);
}
catch (IOException exception) {
// Este error es fatal, hay que cerrar la aplicación.
Logs.log(Level.SEVERE, "No se pudo abrir el archivo de fxml.");
stage.close();
}
scene.getStylesheets().add(css);
stage.setScene(scene);
stage.setTitle(resourceBundle.getString("titulo"));
}
/**
* Click en Español.
*/
@ -297,84 +373,4 @@ public class MenuController extends VBox implements Initializable {
Main.setIcon(dialog, getClass());
dialog.show();
}
/**
* Cargar el fxml, css y titulo.
*
* @param title String: El titulo de la escena.
* @param fxml String: El archivo de fxml.
* @param css String: El archivo de css.
*/
private void loadStage(String title, String fxml, String css) {
Scene scene = menuBar.getScene();
Stage stage = (Stage) scene.getWindow();
try {
Parent parent = FXMLLoader.load(getClass().getResource(fxml), resourceBundle);
scene.setRoot(parent);
}
catch (IOException exception) {
// Este error es fatal, hay que cerrar la aplicación.
Logs.log(Level.SEVERE, "No se pudo abrir el archivo de fxml.");
stage.close();
}
scene.getStylesheets().add(css);
stage.setScene(scene);
stage.setTitle(resourceBundle.getString("titulo") + " - " + title);
}
/**
* Cargar el fxml y css.
*
* @param fxml String: El archivo de fxml.
* @param css String: El archivo de css.
* @param resourceBundle ResourceBundle: El idioma nuevo para cambiarlo.
*/
private void loadStage(String fxml, String css, ResourceBundle resourceBundle) {
Scene scene = menuBar.getScene();
Stage stage = (Stage) scene.getWindow();
try {
Parent parent = FXMLLoader.load(getClass().getResource(fxml), resourceBundle);
scene.setRoot(parent);
}
catch (IOException exception) {
// Este error es fatal, hay que cerrar la aplicación.
Logs.log(Level.SEVERE, "No se pudo abrir el archivo de fxml.");
stage.close();
}
scene.getStylesheets().add(css);
stage.setScene(scene);
stage.setTitle(resourceBundle.getString("titulo"));
}
/**
* Cargar el fxml, css y titulo.
*
* @param title String: El titulo de la escena.
* @param fxml String: El archivo de fxml.
* @param css String: El archivo de css.
* @param object Object: El objeto a pasar a la nueva escena.
*/
private void loadStage(String title, String fxml, String css, Object object) {
Scene scene = menuBar.getScene();
Stage stage = (Stage) scene.getWindow();
try {
Parent parent = FXMLLoader.load(getClass().getResource(fxml), resourceBundle);
scene.setRoot(parent);
}
catch (IOException exception) {
// Este error es fatal, hay que cerrar la aplicación.
Logs.log(Level.SEVERE, "No se pudo abrir el archivo de fxml.");
stage.close();
}
scene.getStylesheets().add(css);
scene.setUserData(object);
stage.setScene(scene);
stage.setTitle(resourceBundle.getString("titulo") + " - " + title);
}
}

64
src/cl/cromer/estructuras/MergeController.java

@ -7,7 +7,6 @@ import javafx.scene.layout.HBox;
import javafx.scene.text.Text;
import java.net.URL;
import java.util.Random;
import java.util.ResourceBundle;
import java.util.Scanner;
@ -51,6 +50,7 @@ public class MergeController implements Initializable {
* @param resourceBundle ResourceBundle: Tiene datos de idioma.
*/
@Override
@SuppressWarnings("Duplicates")
public void initialize(URL location, ResourceBundle resourceBundle) {
this.resourceBundle = resourceBundle;
@ -58,21 +58,12 @@ public class MergeController implements Initializable {
Colores colores = new Colores();
Random random = new Random();
int maximo = 99;
int minimo = 0;
int rango = maximo - minimo + 1;
array = new Array(10);
array.setOrdered(true);
array.llenar();
for (int i = 0; i < 10; i++) {
int numero = random.nextInt(rango) + minimo;
while (array.buscar(numero) != -1) {
numero = random.nextInt(rango) + minimo;
}
array.insertar(numero);
contenidoMerge.getChildren().addAll(Grafico.crearCaja(colores, String.valueOf(i), String.valueOf(numero)));
contenidoMerge.getChildren().addAll(Grafico.crearCaja(colores, String.valueOf(i), String.valueOf(array.getIndice(i))));
colores.siguinteColor();
}
}
@ -86,22 +77,26 @@ public class MergeController implements Initializable {
initializeScene();
}
array = new Array(10);
array.setOrdered(true);
array.nuevo();
array.llenar();
generarGrafico();
}
Random random = new Random();
int maximo = 99;
int minimo = 0;
int rango = maximo - minimo + 1;
for (int i = array.size(); i < 10; i++) {
int numero = random.nextInt(rango) + minimo;
while (array.buscar(numero) != -1) {
numero = random.nextInt(rango) + minimo;
}
array.insertar(numero);
/**
* Crear el array de tamaño 10.
*/
private void initializeScene() {
scene = contenidoMerge.getScene();
}
/**
* Poner los valores en el grafico.
*/
private void generarGrafico() {
for (int i = 0; i < 10; i++) {
Text text = (Text) scene.lookup("#texto_" + String.valueOf(i));
text.setText(array.getIndice(i));
}
generarGrafico();
}
/**
@ -143,21 +138,4 @@ public class MergeController implements Initializable {
generarGrafico();
}
/**
* Crear el array de tamaño 10.
*/
private void initializeScene() {
scene = contenidoMerge.getScene();
}
/**
* Poner los valores en el grafico.
*/
private void generarGrafico() {
for (int i = 0; i < 10; i++) {
Text text = (Text) scene.lookup("#texto_" + String.valueOf(i));
text.setText(array.getIndice(i));
}
}
}

84
src/cl/cromer/estructuras/Pila.java

@ -1,5 +1,7 @@
package cl.cromer.estructuras;
import java.util.Random;
/**
* Crear una estructura de dato de tipo pila.
*
@ -24,39 +26,6 @@ final public class Pila {
size = 0;
}
/**
* Devolver la cantidad de elementos en la pila.
*
* @return int: La cantidad de elementos.
*/
public int size() {
return size;
}
/**
* Push un valor en la pila encima.
*
* @param valor int: El valor a push.
*/
public void push(int valor) {
if (this.pila != null) {
String pila[] = new String[this.pila.length + 1];
int i;
for (i = 0; i < this.pila.length; i++) {
pila[i] = this.pila[i];
}
pila[i] = String.valueOf(valor);
this.pila = pila;
size++;
}
else {
String pila[] = new String[1];
pila[0] = String.valueOf(valor);
this.pila = pila;
size++;
}
}
/**
* Pop un valor de encima de la pila.
*
@ -75,6 +44,15 @@ final public class Pila {
}
}
/**
* Devolver la cantidad de elementos en la pila.
*
* @return int: La cantidad de elementos.
*/
public int size() {
return size;
}
/**
* Peek al valor que está encima de la pila.
*
@ -103,4 +81,44 @@ final public class Pila {
return null;
}
}
/**
* Llenar la pila con valores al azar.
*/
@SuppressWarnings("Duplicates")
public void llenar() {
Random random = new Random();
int maximo = 99;
int minimo = 0;
int rango = maximo - minimo + 1;
for (int i = size(); i < 10; i++) {
int numero = random.nextInt(rango) + minimo;
push(numero);
}
}
/**
* Push un valor en la pila encima.
*
* @param valor int: El valor a push.
*/
public void push(int valor) {
if (this.pila != null) {
String pila[] = new String[this.pila.length + 1];
int i;
for (i = 0; i < this.pila.length; i++) {
pila[i] = this.pila[i];
}
pila[i] = String.valueOf(valor);
this.pila = pila;
size++;
}
else {
String pila[] = new String[1];
pila[0] = String.valueOf(valor);
this.pila = pila;
size++;
}
}
}

31
src/cl/cromer/estructuras/PilaController.java

@ -7,7 +7,6 @@ import javafx.scene.layout.VBox;
import javafx.scene.text.Text;
import java.net.URL;
import java.util.Random;
import java.util.ResourceBundle;
import java.util.Scanner;
import java.util.logging.Level;
@ -87,16 +86,19 @@ public class PilaController implements Initializable {
grafico = new Grafico(scene);
}
Random random = new Random();
int maximo = 99;
int minimo = 0;
int rango = maximo - minimo + 1;
pila.llenar();
generarGrafico();
}
for (int i = pila.size(); i < 10; i++) {
int numero = random.nextInt(rango) + minimo;
pila.push(numero);
/**
* Poner los valores en el grafico.
*/
private void generarGrafico() {
grafico.removerDestacar();
for (int i = 0; i < 10; i++) {
Text text = (Text) scene.lookup("#texto_" + String.valueOf(i));
text.setText(pila.getIndice(i));
}
generarGrafico();
}
/**
@ -201,15 +203,4 @@ public class PilaController implements Initializable {
Main.mostrarError(resourceBundle.getString("pilaVacia"), resourceBundle);
}
}
/**
* Poner los valores en el grafico.
*/
private void generarGrafico() {
grafico.removerDestacar();
for (int i = 0; i < 10; i++) {
Text text = (Text) scene.lookup("#texto_" + String.valueOf(i));
text.setText(pila.getIndice(i));
}
}
}

64
src/cl/cromer/estructuras/QuickController.java

@ -7,7 +7,6 @@ import javafx.scene.layout.HBox;
import javafx.scene.text.Text;
import java.net.URL;
import java.util.Random;
import java.util.ResourceBundle;
import java.util.Scanner;
@ -51,6 +50,7 @@ public class QuickController implements Initializable {
* @param resourceBundle ResourceBundle: Tiene datos de idioma.
*/
@Override
@SuppressWarnings("Duplicates")
public void initialize(URL location, ResourceBundle resourceBundle) {
this.resourceBundle = resourceBundle;
@ -58,21 +58,12 @@ public class QuickController implements Initializable {
Colores colores = new Colores();
Random random = new Random();
int maximo = 99;
int minimo = 0;
int rango = maximo - minimo + 1;
array = new Array(10);
array.setOrdered(true);
array.llenar();
for (int i = 0; i < 10; i++) {
int numero = random.nextInt(rango) + minimo;
while (array.buscar(numero) != -1) {
numero = random.nextInt(rango) + minimo;
}
array.insertar(numero);
contenidoQuick.getChildren().addAll(Grafico.crearCaja(colores, String.valueOf(i), String.valueOf(numero)));
contenidoQuick.getChildren().addAll(Grafico.crearCaja(colores, String.valueOf(i), String.valueOf(array.getIndice(i))));
colores.siguinteColor();
}
}
@ -86,22 +77,26 @@ public class QuickController implements Initializable {
initializeScene();
}
array = new Array(10);
array.setOrdered(true);
array.nuevo();
array.llenar();
generarGrafico();
}
Random random = new Random();
int maximo = 99;
int minimo = 0;
int rango = maximo - minimo + 1;
for (int i = array.size(); i < 10; i++) {
int numero = random.nextInt(rango) + minimo;
while (array.buscar(numero) != -1) {
numero = random.nextInt(rango) + minimo;
}
array.insertar(numero);
/**
* Crear el array de tamaño 10.
*/
private void initializeScene() {
scene = contenidoQuick.getScene();
}
/**
* Poner los valores en el grafico.
*/
private void generarGrafico() {
for (int i = 0; i < 10; i++) {
Text text = (Text) scene.lookup("#texto_" + String.valueOf(i));
text.setText(array.getIndice(i));
}
generarGrafico();
}
/**
@ -143,21 +138,4 @@ public class QuickController implements Initializable {
generarGrafico();
}
/**
* Crear el array de tamaño 10.
*/
private void initializeScene() {
scene = contenidoQuick.getScene();
}
/**
* Poner los valores en el grafico.
*/
private void generarGrafico() {
for (int i = 0; i < 10; i++) {
Text text = (Text) scene.lookup("#texto_" + String.valueOf(i));
text.setText(array.getIndice(i));
}
}
}

70
src/cl/cromer/estructuras/SeleccionController.java

@ -7,7 +7,6 @@ import javafx.scene.layout.HBox;
import javafx.scene.text.Text;
import java.net.URL;
import java.util.Random;
import java.util.ResourceBundle;
import java.util.Scanner;
@ -51,6 +50,7 @@ public class SeleccionController implements Initializable {
* @param resourceBundle ResourceBundle: Tiene datos de idioma.
*/
@Override
@SuppressWarnings("Duplicates")
public void initialize(URL location, ResourceBundle resourceBundle) {
this.resourceBundle = resourceBundle;
@ -58,22 +58,13 @@ public class SeleccionController implements Initializable {
Colores colores = new Colores();
Random random = new Random();
int maximo = 99;
int minimo = 0;
int rango = maximo - minimo + 1;
array = new Array(10);
array.setOrdered(true);
array.llenar();
for (int i = 0; i < 10; i++) {
int numero = random.nextInt(rango) + minimo;
while (array.buscar(numero) != -1) {
numero = random.nextInt(rango) + minimo;
}
array.insertar(numero);
contenidoSeleccion.getChildren().addAll(Grafico.crearCaja(colores, String.valueOf(i), String.valueOf(numero)));
colores.siguinteColor();
contenidoSeleccion.getChildren().addAll(Grafico.crearCaja(colores, String.valueOf(i), String.valueOf(array.getIndice(i))));
colores.siguinteColor();
}
}
@ -86,25 +77,29 @@ public class SeleccionController implements Initializable {
initializeScene();
}
array = new Array(10);
array.setOrdered(true);
Random random = new Random();
int maximo = 99;
int minimo = 0;
int rango = maximo