Balanceamento de paranteses

PHP, Java, JavaScript, XML, XHTML, HTML, CSS, ASP, Delphi, Assembly, LaTeX, C, UML, Flash, Perl, SQL, Python, Zope, Pascal, WML. Se conhece mais de 3 siglas referidas, este é o forum para si.

Moderadores: Administradores, Moderadores

Balanceamento de paranteses

Mensagempor raqh » Sábado Mai 09, 2009 8:36

Olá pessoal!

Estou a tentar fazer um programa que verifique o balanceamento de parenteses...mas apesar de não ter erros, não funciona bem.... Ele diz sempre que os parenteses da expressão estao correctamente balanceados....:roll:

Envio-vos o meu código. Alguém me poderia ajudar?

Obrigado.

Código: Seleccionar todos
public interface Stack
{
   public Object push(int i);
   public Object pop();
   public boolean isEmpty();
}


Código: Seleccionar todos


class PilhaArray implements Stack
{
   Object[] pilha;
   int inicio;
   
   public PilhaArray()
   {
      pilha = new Object[100];
      inicio=-1;
   }
   
   
   public boolean isEmpty()
   {
      return inicio == -1;
   }
   
   
   public Object push(int item)
   {
      if (inicio==pilha.length-1) 
      {
         pilha[++inicio] = item;
      }
      
      return item;
   }
   

   public Object pop()
   {
      
      if(!isEmpty())
      {
         inicio--;
      }
         
      return pilha[inicio];
   }
}


Código: Seleccionar todos

import java.io.*;
   
   public class BalenPararenteses
   {
   
     public static boolean verificarParen(String s)
    {
       PilhaArray stack = new PilhaArray ();     
   
       for (int i = 0; i < s.length()-1; i++)
   {
      switch (s.charAt(i))
      {
         case '(':
               stack.push(new Character ('('));
         break;
         case '[':
               stack.push(new Character ('['));
         break;

         case '{':
               stack.push(new Character ('{'));

         break;
         case ')':
               Character c = (Character) stack.pop();
               if (!match(c.charValue(), s.charAt(i))) return false;
         break;
         case ']':
            
               c = (Character) stack.pop();
               if (!match(c.charValue(), s.charAt(i))) return false;
         break;
         case '}':
               c = (Character) stack.pop();
               if (!match(c.charValue(), s.charAt(i))) return false;
         break;
         default:
         break;
      }
       }
   
       if ( stack.isEmpty())
      return true;
   else
      return false ;
   
     }
   

     public static boolean match(char lpar, char rpar) {
       switch (lpar) {
       case '(': return rpar == ')';
       case '[': return rpar == ']';
       case '{': return rpar == '}';
       default: return false;
       }
     }
   
   
     public static void main(String[] args) throws IOException
     {
   BufferedReader stdr; 
   stdr = new BufferedReader(new InputStreamReader(System.in));
   
   String line = stdr.readLine();   
   while (line != null) {
         if (verificarParen(line))
           System.out.println("well parenthesized");
         else
           System.out.println("parenthesis mismatch");
   
         line = stdr.readLine();   
       }
     }
   }
raqh
Novato
Novato
 
Mensagens: 15
Registado: Sábado Abr 04, 2009 17:43

Voltar para Programação

Quem está ligado:

Utilizador a ver este Fórum: Nenhum utilizador registado e 1 visitante

cron