import java.io.*;
import java.awt.Component;
import javax.swing.JDialog;
import javax.swing.JOptionPane;
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 números deseas que tenga la cintilla?"));
cadenaCintilla = JOptionPane.showInputDialog("Dame los datos de la cintilla?");
// 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 posición 0?"));
// valor que pondra cuando aparezca }0
int poner0 = Integer.parseInt(JOptionPane.showInputDialog("Que valor quieres 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("Cuántos saltos desea que de la posicón 1?"));
// valor que pondra cuando salga 1
int poner1 = Integer.parseInt(JOptionPane.showInputDialog("Que valor quieres 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" + " " + "colocar");
if (movimiento0==0)
mensajeMov0="DER";
else
mensajeMov0="IZQ";
if (movimiento1==0)
mensajeMov1="DER";
else
mensajeMov1="IZQ";
System.out.print("0 " + mensajeMov0 + " " + salto0 + " " + poner0 + "\n");
System.out.print("1 " + mensajeMov1 + " " + salto1 + " " + poner1 + "\n");
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 término 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", JOptionPane.PLAIN_MESSAGE);
}
}
MUY BIEN !!
ResponderEliminar