Criptografar usando determinado numero de Pilhas

3 respostas
O

Boa tarde.

Estou tentando implementar um programinha em java que é pra fazer o seguinte:

1- O Usuario escolhe quantas pilhas ira usar;
2- Depois digita uma frase para ser criptografada.
3- Depois o programa mostra essa frase criptografada ou seja "invertida" usando a quantidade de pilhas escolhidas no começo do programa

A pilha eu ja consegui fazer pra inverter a frase, só não estou conseguindo implementar a quantidade de pilhas pra serem usadas,
se poderem me dar uma forsinha eu agradeço.

Segue abaixo o programa implementado faltando apenas implementar o numero de pilhas a serem usadas

São tres classes:
class Pilha {

    private int TamMax;
    private char[] VetorPilha;
    private int topo;
//--------------------------------------------------------------

    public Pilha(int maximo) // constructor
    {
        
        TamMax = maximo;
        VetorPilha = new char[TamMax];
        topo = -1;
    }
//--------------------------------------------------------------

    public void empilha(char p)       // Coloca o item do topo da pilha
    {
        VetorPilha[++topo] = p;
    }
//--------------------------------------------------------------

    public char desempilha()          // Retira o item do topo da pilha
    {
        return VetorPilha[topo--];
    }
//--------------------------------------------------------------

    public char verificaTopo() // Verifica o topo da pilha
    {
        return VetorPilha[topo];
    }

//--------------------------------------------------------------
    public boolean vazia() // Retorna verdadeiro ou falso 
    {                           // se a pilha estiver vazia 
        return (topo == -1);
    }
//--------------------------------------------------------------
} // Fim da classe Pilha
////////////////////////////////////////////////////////////////
class Reversora {

    
    private String entrada; // entrada da string 
    private String saida; // saida da string
  //--------------------------------------------------------------

    public Reversora(String carac) // contrutor para classe onde acontecerá a criptografia
    {

        entrada = carac;
    }
//--------------------------------------------------------------

    public String Reversor() // reverse the string
    {


        int TamPilha = entrada.length(); // get max stack size
        Pilha PilhaAux = new Pilha(TamPilha); // make stack

        for (int p = 0; p < entrada.length(); p++) {
            char ch = entrada.charAt(p); // get a char from input
            PilhaAux.empilha(ch); // push it

        }
        saida = " ";

        while (!PilhaAux.vazia()) {
            char ch = PilhaAux.desempilha(); // pop a char,
            saida = saida + ch; // append to output
        }
        return saida;
    } // fim do método Reversor  ()
//--------------------------------------------------------------
} // fim class Reversora
////////////////////////////////////////////////////////////////
import javax.swing.JOptionPane;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 *
 * @author Cleber
 */
class ProgReversor {
   
       public static void main(String[] args) {
               
        String entrada, saida;
        while (true) {
           
            
            entrada = JOptionPane.showInputDialog("Digite uma Frase para ser Criptografada: \n"
                    + "Ou pressione 'ENTER' para sair");
                                   
            if (entrada.equals("")) // quit if [Enter]
            
                break;

           Reversora CaracInvertido = new Reversora(entrada);
            saida = CaracInvertido.Reversor(); // use it
            JOptionPane.showMessageDialog(null, "Frase a ser Criptografada: " + entrada
                    + "\nFrase Criptografada:" + saida);
            
    } // fim while
//--------------------------------------------------------------
   
}  // fim main()
    
}// fim class ProgReversor
////////////////////////////////////////////////////////////////

Só falta implementar o numero de pilhas a ser usadas, agradeço desde ja se puderem me ajudar.
Por Exemplo:
Eu quero usar 3 Pilhas para Criptografar a Frase: Mamae eu te amo muito

Frase criptografada: ito muam ote euae amM

Mais ou menos assim.
Agradeço desde ja.

3 Respostas

J

Mosca,

Calma lá que eu ainda não entendi o seu lance com as Pilhas. O que seria uma Pilha nessa sua aplicação?
Você disse que ele “inverte” as palavras. Mas na verdade ele “embaralha” elas, correto?

O

jaboot:
Mosca,

Calma lá que eu ainda não entendi o seu lance com as Pilhas. O que seria uma Pilha nessa sua aplicação?
Você disse que ele “inverte” as palavras. Mas na verdade ele “embaralha” elas, correto?

Rapaz é porque na pilha a ultima letra a entrar é a primeira que sai e a primeira a entrar é a ultima que sai, então se empilhar-mos a frase informada anteriormente quando fomos desempilhar das tres pilhas, ela ficaria embaralhada. ou seja seguindo a sequencia de desempilhamento.

Seria melhor de entender se podesse fazer um desenho da pilha noma folha de papel e inserindo as letras da direita pra esquerda com as tres pilhas ai voce entende Melhor. Sim e considerando os espaços entre as palavras.

O

jaboot:
Mosca,

Calma lá que eu ainda não entendi o seu lance com as Pilhas. O que seria uma Pilha nessa sua aplicação?
Você disse que ele “inverte” as palavras. Mas na verdade ele “embaralha” elas, correto?

Ta aparecendo invertido ai porque eu só estou usando uma pilha, caso usasse as tres pilhas ficaria do mesmo jeito do exemplo dado por mim.

Criado 5 de janeiro de 2012
Ultima resposta 5 de jan. de 2012
Respostas 3
Participantes 2