Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Bueno pues anteriormente trabaje esto pero en Java, cuando veia sobre "Maquina de Estado Finito", lo que hice fue una clase llamada Base que con ella me daba las bases que ocupara desde la base 2 a la 16
- Mas sobre [url=http://"http://es.wikipedia.org/wiki/M%C3%A1quina_de_estados"]MEF[/url]
- Bueno para no decir mucho aqui te lo dejo talvez te sirva para que veas:
- [code=java]
- package MEF;
- /**
- * @author Victor
- */
- public class BASE
- {
- int pos = 1;
- public String suma(String a, String b, String [][] f, String [][] g)
- {
- String n,nn;
- String r = "";
- while(a.length() > b.length())
- {
- b = "0" + b;
- }
- while(a.length() < b.length())
- {
- a = "0" + a;
- }
- for(int x = (a.length()-1); x>=0; x--)
- {
- n = String.valueOf(a.charAt(x)) + "" + String.valueOf(b.charAt(x));
- for(int t = 0; t<f[0].length; t++)
- {
- nn = (f[0][t]);
- if(n.equals(nn))
- {
- r = valor(t,f,g) + r;
- }
- }
- }
- if(pos == 2)
- r = "1"+r;
- return r;
- }
- private String valor(int columna,String [][] f,String [][] g)
- {
- String m = "";
- if (pos == 1)
- {
- if(f[1][columna] != "SA")
- {
- pos = 2;
- }
- m = g[1][columna];
- }else{
- if(f[2][columna] == "SA")
- {
- pos = 1;
- }
- m = g[2][columna];
- }
- return m;
- }
- public String imprimir(int base,String [][] f, String [][] g)
- {
- String k = "";
- k = k + ("\nTABLA F - BASE:" + base+"\n");
- for(int x = 0; x<3; x++)
- {
- if(x == 1)
- k = k + ("SA|");
- else if(x == 2)
- k = k + ("CA|");
- else
- k = k + ("EI|");
- for(int xx = 0; xx<(base*base); xx++)
- {
- k = k + (f[x][xx] + "|");
- }
- k = k + ("\n");
- }
- k = k + ("\nTABLA G - BASE:" + base+"\n");
- for(int x = 0; x<3; x++)
- {
- if(x == 1)
- k = k + ("SA|");
- else if(x == 2)
- k = k + ("CA|");
- else
- k = k + ("EI|");
- for(int xx = 0; xx<(base*base); xx++)
- {
- while(g[0][xx].length() > g[x][xx].length())
- {
- g[x][xx] = " " + g[x][xx];
- }
- k = k + (g[x][xx] + "|");
- }
- k = k + ("\n");
- }
- return k;
- }
- //Llenando la matriz
- public String [][] Llenar(int base, int tipo)
- {
- //Creamos una matriz la cual luego llenaremos
- String [][] m = new String[2][base*base];
- int n=0,xx = 0;
- //Vemos que matriz es la que llenaremos f=0 o g=1
- if(tipo == 0)
- {
- String [][] f = new String[3][base*base];
- for(int x = 0; x<3; x++)
- {
- xx = 0;
- for(int i = 0; i<base; i++)
- {
- for(int ii = 0; ii<base; ii++)
- {
- if(x == 1)
- {
- if((i+ii) < base)
- f[x][xx] = "SA";
- else
- f[x][xx] = "CA";
- xx++;;
- }else if(x == 2){
- if(((i+ii)+1) < base)
- f[x][xx] = "SA";
- else
- f[x][xx] = "CA";
- xx++;;
- }else{
- f[x][n] = convertirnumero(i) + "" + convertirnumero(ii);
- n++;
- }
- }
- }
- }
- m = f;
- }else{
- String [][] g = new String[3][base*base];
- for(int x = 0; x<3; x++)
- {
- xx = 0;
- for(int i = 0; i<base; i++)
- {
- for(int ii = 0; ii<base; ii++)
- {
- if(x == 1)
- {
- if((i+ii) < base)
- g[x][xx] = convertirnumero(i+ii);
- else
- g[x][xx] = convertirnumero(g(base,i,ii));
- xx++;;
- }else if(x == 2){
- if(((i+ii)+1) < base)
- g[x][xx] = convertirnumero((i+ii+1));
- else
- g[x][xx] = convertirnumero(g1(base,i,ii));
- xx++;;
- }else{
- g[x][n] = convertirnumero(i) + "" + convertirnumero(ii);
- n++;
- }
- }
- }
- }
- m = g;
- }
- return m;
- }
- public void SOP(String msg)
- {
- System.out.print(msg);
- }
- private static int g(int base, int i, int ii)
- {
- return (int)((i+ii)-base);
- }
- private static int g1(int base, int i, int ii)
- {
- return (int)((i+ii+1)-base);
- }
- public static String convertirnumero(int i)
- {
- //System.out.println("\n" + i);
- String [] letras = {"A", "B", "C" , "D", "E", "F", "G", "H"};
- for(int n = 0; n<(n+letras.length); n++)
- {
- if(i == n)
- {
- if(n >= 10)
- return letras[n-10];
- else
- return String.valueOf(n);
- }
- }
- return "0";
- }
- }
- [/code]
- Ahora desde el main lo utilizamos asi:
- [code=java]
- package MEF;
- /**
- * @author Victor
- */
- public class MEF
- {
- public static void main(String[] args)
- {
- BASE Obj = new BASE();
- int base = 0;
- String a="0",b="0";
- //do{
- base = read.dataInt("Teclee Base 2 - 9: ") ;
- //}while(base < 2 || base > 9);
- String [][] f = Obj.Llenar(base, 0);
- String [][] g = Obj.Llenar(base, 1);
- //Esto solo para imprimir las tablas de F y G
- System.out.println(Obj.imprimir(base, f, g));
- Obj.SOP("\n\n");
- a = read.data("Teclee Primer valor: ");
- b = read.data("Teclee Segundo valor: ");
- String suma = Obj.suma(a, b, f, g);
- Obj.SOP("\nLa Suma de " + a + " y " + b + " es igual a: " + suma);
- }
- }
- [/code]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement