Programa AVES

(AValiação de Expressões Simples)



  • Descrição do trabalho

    O AVES é um programa que trata expressões matemáticas simples, apartir de um conjunto de expressões dadas pelo usuário, e retornando o(s) resultado(s) e/ou expressões de erros contidas na formulação das expressões. 

 

 O programa pode avaliar: 

constantes numéricas inteiras, no intervalo de −32768 a 32767;

operadores (+,−, /, *,ˆ, %), com precedência descrita na Tabela abaixo, e;

delimitadores de escopo (i.e. parênteses).

Tabela - Precedência e ordem de associação de operadores em expressões aves. O operador ^ representa a operação de exponenciação e o operador % representa a operação de resto da divisao
Tabela - Precedência e ordem de associação de operadores em expressões aves. O operador ^ representa a operação de exponenciação e o operador % representa a operação de resto da divisao


Segue abaixo exemplos de expressões válidas para o AVES:

  •  35 - 3 * ( -2 + 5 ) ^ 2
  •  54 / 3 ^ ( 12 + 5 ) * 2
  •  ( ( 2 - 3 ) * 10 - ( 2 ^ 3 * 5 ))
  • Como Utilizar

Baixe o arquivo o pacote com todos os arquivos logo abaixo. Compile o arquivo aves.cpp incluso utilizando o comando $ g++ -Wall aves.cpp - o 'nome do arquivo' .


É possivel digitar as expressões direto na execução (Para terminar digite ctrl+d). O resultado ém gerado com um "enter" no teclado.
É possivel utilizar um arquivo .txt com expressões válidas ou inválidas para gerar resultados.

Para executar: ./'nome do arquivo' <'nome do arquivo com as expressoes'.txt


Exemplo: g++ -Wall aves.cpp - o aves
              ./aves <entrada.txt

 

Um arquivo e entrada para teste esta incluso nos pacotes .zip e .rar

O programa deve gerar, alem da resposta na tela, um arquivo log_erros.txt que deve conter resposta correta ou mensagem de erro no formato Exx Cyy, onde xx codigo do erro e yy coluna onde o erro foi encontrado. Qualquer duvida e/ou sugestão é só me escrever.

Download
aves.zip
Arquivo com o pacote completo de Aves zipado com exemplo de entrada.
aves.zip
Compressed Archive in ZIP Format 21.4 KB
Download
aves.rar
Arquivo com o pacote completo de Aves .rar com exemplo de entrada.
aves.rar
compressed file archive 19.5 KB

Entrada                                            

Saida         

 35 - 3 * (-2 + 5)ˆ2 

8

 54 / 3 ˆ (12%5) * 2 

12

 1000000 - 2 

E1 C1

 ((2-3)*10 - (2ˆ3*5)) 

-50

 2 = 3

E4 C3

 2 - 4)

E7 C6

 3 *    d 

E3 C8

                          

 Os tipos de erros são:

 

  1. Constante numérica inválida: Um dos operandos da expressão está fora da faixa permitida. Ex.: 1000000 − 2, coluna 1.
  2. Falta operando: Em alguma parte da expressão está faltando um operando. Ex.: 2+, coluna 2; ou 2 ** 3, coluna 3. 
  3. Operando inválido: Existe um operando que não é uma constante numérica inteira válida. Ex.: 3 * d, coluna 5.
  4. Operador inválido: Existe um símbolo correspondente a um operador que não está na lista de operadores válidos. Ex.: 2 = 3, coluna 3; ou 2.3 + 4, coluna 2.
  5. Falta operador: Aparentemente o programa encontrou um operando válido mas “perdido” (i. e., sem um operador associado) na expressão. Ex.: 2 * 3 4, coluna 5.
  6. Fechamento de escopo inválido: Existem um parêntese fechando sem ter um parêntese abrindo correspondente. Ex.: )2 − 4, coluna 1; ou 2 − 4), coluna 6.
  7. Escopo aberto: Existe um parêntese de abertura ‘(’ sem um parêntese de fechamento ‘)’ correspondente. Ex.: ((2%3) * 8, coluna 1.
  8. Divisão por zero: Houve divisão cujo quociente é zero. Ex.: 3/(1 − 1), coluna 4(os parênteses são ignorados).