Cifra de Bacon

1 resposta
java
A

Estou com um problema, meu professor pediu para eu fazer a cifra de bacon, e o maior problema é como vou colocar o espaço no resultado, ele aparece todo junto no final e eu queria que aparece como a pessoa digitou segue o código a baixo:

binario[0] = 00001; binario[1] = 00010;binario[2] = 00011; binario[3] = 00100;

binario[4] = 00101; binario[5] = 00110; binario[6] = 00111;binario[7] = 01000;

binario[8] = 01001;binario[9] = 01010;binario[10] = 01011;binario[11] = 01100;

binario[12] = 01101;binario[13] = 01110;binario[14] = 01111; binario[15] = 10000;

binario[16] = 10001;binario[17] = 10010; binario[18] = 10011;binario[19] = 10100;

binario[20] = 10101;binario[21] = 10110;binario[22] = 10111;binario[23] = 11000;

binario[24] = 11001;binario[25] = 11010;
binario2[0] = "a"; binario2[1] = "b";binario2[2] = "c"; binario2[3] = "d";
    binario2[4] = "e"; binario2[5] = "f"; binario2[6] = "g";binario2[7] = "h";
    binario2[8] = "i";binario2[9] = "j";binario2[10] = "k";binario2[11] = "l";
    binario2[12] = "m";binario2[13] = "n";binario2[14] = "o"; binario2[15] = "p";
    binario2[16] = "q";binario2[17] = "r"; binario2[18] = "s";binario2[19] = "t";
    binario2[20] = "u";binario2[21] = "v";binario2[22] = "w";binario2[23] = "x";
    binario2[24] = "y";binario2[25] = "z";

    String v = "";
    String w = "";
    String x = txt_1.getText().replaceAll(" ", "");
    String y = txt_2.getText();

    String[] texto1 = new String[x.length()];
    String[] texto2 = new String[x.length()*5];
    String[] texto3 = new String[x.length()*5];

    if((x.length()*5) > y.length())
    {
        int z = (x.length()*5)-y.length();
        JOptionPane.showMessageDialog(null, "Ainda falta " + z + " letras para funcionar");
    }

    for (int i = 0; i < x.length(); i++)
    {
        texto1[i] = x.substring(i,i+1).toLowerCase();
    }

    for (int i = 0; i < texto1.length; i++)
    {
        for (int j = 0; j < binario2.length; j++)
        {
            if(texto1[i].equals(binario2[j]))
            {
                w = w.concat(binario[j]);
            }
        }
    }

    for (int i = 0; i < x.length()*5; i++)
    {
        texto2[i] = y.substring(i,i+1);
        texto3[i] = w.substring(i,i+1);
        
        if(texto3[i].equals("0"))
        {
            texto2[i] = texto2[i].toLowerCase();
        }
        else
        {
            texto2[i] = texto2[i].toUpperCase();
        }
        v = v.concat(texto2[i]);
    }

    txt_3.setText(""+w);
    txt_4.setText(""+v);
    
    
    
    //--------------------------------------DECODIFICAÇÃO--------------------------------------
    
    int numero1 = 0,numero2 = 0;
    numero1 = (txt_1.getText().length()*5)/4;        
   
    String a = "";
    String b = "";
    String[] numero = new String[numero1];
   
    for (int i = 0; i < w.length()/5; i++)
    {
        a = w.substring(numero2,numero2+5);
        numero2 += 5;
        for (int j = 0; j < binario.length; j++)
        {
            if(a.equals(binario[j]))
            {
                b = b.concat(binario2[j]);
            }
        }
    }
    txt_5.setText(b);

1 Resposta

D

Uma possibilidade é criar uma matriz com o tamanho igual ao total de palavras inseridas. Cada posição da matriz armazena o total de caracteres da palavra que lhe é correspondente.
Então, após processar a cifra, você quebra-a, inserindo espaços de acordo com a posição original da palavra.

Criado 23 de junho de 2019
Ultima resposta 25 de jun. de 2019
Respostas 1
Participantes 2