From 4196ce4f61906aaa73f3ab0840edc9c4c07da97a Mon Sep 17 00:00:00 2001 From: carlos Date: Mon, 3 Jul 2017 16:07:54 +0000 Subject: [PATCH] =?UTF-8?q?Cambio=20para=20recibir=20m=C3=A1s=20de=20un=20?= =?UTF-8?q?estado=20final?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/mt/LoteController.java | 3 ++- src/mt/Maquina.java | 40 +++++++++++++++++++++++++++----------- 2 files changed, 31 insertions(+), 12 deletions(-) diff --git a/src/mt/LoteController.java b/src/mt/LoteController.java index 89ac8da..03911c6 100644 --- a/src/mt/LoteController.java +++ b/src/mt/LoteController.java @@ -15,7 +15,8 @@ public class LoteController { protected void runLote() throws Exception { Scene scene = vboxLote.getScene(); Maquina maquina = (Maquina) scene.getUserData(); - if (maquina.comprobarCadena(new StringBuilder("000111###"), 5)) { + int[] estados = {5}; + if (maquina.comprobarCadena(new StringBuilder("000111###"),estados)) { MT.mostrarMensaje("Resultado", "Reconce"); } else { diff --git a/src/mt/Maquina.java b/src/mt/Maquina.java index 4472f88..2b6419d 100644 --- a/src/mt/Maquina.java +++ b/src/mt/Maquina.java @@ -11,23 +11,33 @@ import org.w3c.dom.Document; class Maquina { private final Automata maquina; + private Estado estadoactual; + private Enlace enlaceactual; + private String cintaanterior; Maquina(Document document) { maquina = new Automata(document); + estadoactual = maquina.getEstados().get(0); + enlaceactual = null; + cintaanterior = ""; } - Automata getMaquina() { - return maquina; - } + Automata getMaquina() {return maquina;} - boolean comprobarCadena(StringBuilder cinta, int estadoFinal) { - Estado qi = maquina.getEstados().get(0); + public Estado getEstadoactual() {return estadoactual;} + + public Enlace getEnlaceactual() {return enlaceactual;} + + public String getCintaanterior() {return cintaanterior;} + + boolean comprobarCadena(StringBuilder cinta, int[] estadoFinal) { + //estadoactual = maquina.getEstados().get(0); int cabezal = 0; int i; - for (i = 0; i < qi.getEnlaces().size(); i++) { - if (qi.getEnlaces().get(i).getSi() == cinta.charAt(cabezal)) { - cinta.setCharAt(cabezal, qi.getEnlaces().get(i).getSj()); - switch (qi.getEnlaces().get(i).getMovimiento()) { + for (i = 0; i < estadoactual.getEnlaces().size(); i++) { + if (estadoactual.getEnlaces().get(i).getSi() == cinta.charAt(cabezal)) { + cinta.setCharAt(cabezal, estadoactual.getEnlaces().get(i).getSj()); + switch (estadoactual.getEnlaces().get(i).getMovimiento()) { case 'L': { cabezal--; if (cabezal == (-1)) { @@ -45,11 +55,19 @@ class Maquina { } default: {/*Se mantiene*/} } - qi = qi.getEnlaces().get(i).getQj(); + estadoactual = estadoactual.getEnlaces().get(i).getQj(); i = -1; } } - return (qi.getQ() == estadoFinal); + for(i=0;i