Вы находитесь на странице: 1из 4

import import import import

java.io.*; java.awt.Component; javax.swing.JDialog; javax.swing.JOptionPane;

/** * Version: 1.0 * Uziel Esau Mercado * Instituto Tecnologico de Aguascalientes */ // este programa nos permite hacer una simulacin de la maquina de turing // la cual procesa datos binarios. public class maquinaTuring { public static int direccion(int dir) { int seleccion=-1; boolean errorAsignacion = true; while (errorAsignacion == true ) { seleccion = JOptionPane.showOptionDialog( null, "Selecciona la opcion para el movimiento "+dir, "Selector de opciones" , JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, // null para icono por defecto. new Object[] { "Avanzar", "Retroseder"}, // null para YES, NO y CANCEL "opcion 1"); if (seleccion != -1) { errorAsignacion = false; } else { errorAsignacion = true; } } return seleccion; } /** * */ public static void main (String [] args) throws IOException { boolean error = true; //Llenado de la cintilla. int cuantos=0; String cadenaCintilla=""; while (error == true) { cuantos=Integer.parseInt(JOptionPane.showInputDialog("Cuantos nmeros deseas que tenga la cintilla?")); cadenaCintilla = JOptionPane.showInputDialog("Dame los datos de la c intilla?"); // System.out.println(cuantos + " " + cadenaCintilla.length()); if (cuantos == cadenaCintilla.length()) error = false; else

{ error = true; JOptionPane.showMessageDialog(null, "No coloc los datos correctos ", "Datos Incorrectos", JOptionPane.ERROR_MESSAGE); } } int[] cinta = new int[cuantos]; int[] resultado = new int[cuantos]; for (int i=0; i<cuantos; i++) { cinta[i] = Integer.parseInt(cadenaCintilla.substring(i,i+1)); } int tipomov0 = -1; tipomov0 = JOptionPane.showOptionDialog(null, "Selecciona la opcion para el movimiento ","Selector de opciones" ,JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE,null, // null para icono por defecto. new Object[] { "Avanza y modifica", "Modifica y avanza"}, // null para YES, NO y CANCEL "opcion 1"); // movimiento 0 int movimiento0 = direccion(0); System.out.println(movimiento0); // salto que tendr 0 int salto0=Integer.parseInt(JOptionPane.showInputDialog("Cuantos saltos desea que de la posicin 0?")); // valor que pondra cuando aparezca }0 int poner0 = Integer.parseInt(JOptionPane.showInputDialog("Que valor qui eres poner cuando sea 0?")); // movimiento 1 int tipomov1 = -1; tipomov1 = JOptionPane.showOptionDialog(null, "Selecciona la opcion para el movimiento ","Selector de opciones" ,JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE,null, // null para icono por defecto. new Object[] { "Avanza y modifica", "Modifica y avanza"}, // null para YES, NO y CANCEL "opcion 1"); int movimiento1 = direccion(1); // salto que tendr 1 int salto1=Integer.parseInt(JOptionPane.showInputDialog("Cuntos saltos de sea que de la posicn 1?")); // valor que pondra cuando salga 1 int poner1 = Integer.parseInt(JOptionPane.showInputDialog("Que valor qui eres poner cuando sea 1?")); System.out.println("Valores de la cintilla"); for (int i=0; i<cuantos; i++) { System.out.print(cinta[i] + " "); } String mensajeMov0=""; String mensajeMov1=""; System.out.println("\n"); System.out.println(" " + " movimiento" + " " + "salto" + " ocar"); if (movimiento0==0) mensajeMov0="DER"; else mensajeMov0="IZQ";

" + "col

if (movimiento1==0) mensajeMov1="DER"; else mensajeMov1="IZQ"; System.out.print("0 " + poner0 + "\n"); System.out.print("1 " + poner1 + "\n"); // " + mensajeMov0 + " " + mensajeMov1 + " " + salto0 + " " + salto1 + "

int indice = 0; System.out.println(cinta.length); while (indice < cinta.length && indice >= 0) { for (int i=0; i<cinta.length; i++) { System.out.print(cinta[i] + " "); } switch (cinta[indice]) { case 0: { if (tipomov0 == 0) { if (movimiento0 == 0 ) indice = indice + salto0; else indice = indice - salto0; if (indice >=0 && indice < cinta.length) cinta[indice]=poner0; } else { cinta[indice]=poner0; if (movimiento0 == 0) indice = indice + salto0; else indice = indice - salto0; } break; } case 1: { if (tipomov1 == 0 ) { if (movimiento1 == 0) indice = indice + salto1; else indice = indice - salto1; if (indice >= 0 && indice < cinta.length ) cinta[indice]=poner1; } else { cinta[indice]=poner1; if (movimiento1 == 0) indice = indice + salto1; else

indice = indice - salto1; } break; } } } if (indice < 0 ) // System.out.println("El programa fue ABORTADO"); JOptionPane.showMessageDialog(null, "El programa no trmino porque fue ABORTADO", "Programa ABORTADO", JOptionPane.ERROR_MESSAGE); else { // System.out.println("Resultados Nuevos"); JOptionPane.showMessageDialog(null, "El programa ha FINALIZADO", "Nuevos Resultados", JOptionPane.PLAIN_MESSAGE); String res = ""; for (int i=0; i<cuantos; i++) { System.out.print( cinta[i] + " "); // System.out.print(cinta[i] + " "); } // JOptionPane.showMessageDialog(null, res, "Nuevos Resultados", JOptionP ane.PLAIN_MESSAGE); } }