示例#1
0
        public void Exercicio()
        {
            Console.Clear();

            String sequenciaBase, sequenciaFinal, comando;

            Console.Write("Sequência Base: ");
            sequenciaBase = Console.ReadLine();
            Console.Write("Sequência Final: ");
            sequenciaFinal = Console.ReadLine();
            Console.Write("Sequência de Comandos: ");
            comando = Console.ReadLine();

            int aux = 0, sequenciaBasePosicao = 0, sequenciaNovaPosicao = 0;

            char[] sequenciaNovaChar = new char[sequenciaFinal.Length];
            Pilha  pilha             = new Pilha(comando.Length);

            while (aux < comando.Length)
            {
                if (comando[aux].Equals('I') || comando[aux].Equals('i'))
                {
                    pilha.push(sequenciaBase[sequenciaBasePosicao]);
                    sequenciaBasePosicao++;
                }
                else if (comando[aux].Equals('R') || comando[aux].Equals('r'))
                {
                    sequenciaNovaChar[sequenciaNovaPosicao] = pilha.pop();
                    sequenciaNovaPosicao++;
                }
                else
                {
                    Console.WriteLine("Comando inválido. Insira somente I ou R.\n");
                    return;
                }
                aux++;
            }

            String sequenciaNova = new String(sequenciaNovaChar);

            if (sequenciaNova == sequenciaFinal)
            {
                Console.WriteLine("\nO resultado dos comandos é igual à sequência final.\n");
            }
            else
            {
                Console.WriteLine("\nO resultado dos comandos não é igual à sequência final.\n");
            }
        }
示例#2
0
        public void Exercicio()
        {
            Console.Clear();

            Console.Write("Insira uma frase: ");
            String frase = Console.ReadLine(); // Lê a frase

            Pilha p   = new Pilha(frase.Length);
            Fila  f   = new Fila(frase.Length);
            int   aux = 0;

            foreach (char c in frase)
            {
                if (c.Equals(' ') || c.Equals(',') || c.Equals('.') || c.Equals(':') || c.Equals('-'))
                {
                }
                else
                {
                    p.push(c);
                    f.push(c);
                    // Envia à fila e pilha somente letras do alfabeto
                }
            }

            char[] pilhaC = new char[frase.Length];
            char[] filaC  = new char[frase.Length];

            while (!p.isEmpty() && !f.isEmpty())
            {
                pilhaC[aux] = p.pop();
                filaC[aux]  = f.pop();
                aux++;
                // Retorna as frases em ordem normal e invertida
            }

            String novaFrase          = new String(filaC);
            String novaFraseInvertida = new String(pilhaC);

            // Compara as duas frases
            if (novaFrase == novaFraseInvertida)
            {
                Console.WriteLine("É um palíndromo\n");
            }
            else
            {
                Console.WriteLine("Não é um palíndromo\n");
            }
        }
示例#3
0
 public Fila(int tam)
 {
     vetor = new char[tam];
     fim   = -1;
     p     = new Pilha(tam);
 }