Enunciado

Pretende-se melhorar a calculadora feita na ficha 5. Esta calculadora deverá ser dotada das seguintes operações:
• Somas, subtracções, divisões, multiplicações;
• Potenciações, raízes quadradas;
• Senos, Co-senos;
• Desenhar graficamente o gráfico de funções.

Solução mínima

A calculadora deverá de ser capaz de realizar as seguintes operações:
• Somas, subtracções, divisões, multiplicações;
• Potenciações, raízes quadradas;
• Senos, cosenos;


Solução intermédia

A calculadora deverá de ser capaz de trabalhar com funções até 3 variáveis (x, y e z)

Solução avançada

A calculadora deverá conseguir desenhar funções com uma variável.
Deverá ser possível na visualização do gráfico:
• Deslocar a visualização para a direita, esquerda, cima e baixo;

• Aumentar e diminuir o zoom;

• Aumentar e diminuir a resolução do gráfico;

• Serão valorizadas outras funcionalidades não especificadas;

Especificação do Problema

Os dois algoritmos abaixo(dado pelo docente da cadeira) foi a base para realizar este trabalho

Para todos os elementos ch  da string INFIXA

Se ch é um número

Introduz na ch na string POSFIXA

Senão

X1 = p.peek();

Se o operador ch for maior que x1

P.push(ch)

Senão

Retirar da pilha os elementos que forem maiores ou iguais a X1

P.push(ch)

Retorna POSFIXA

Para todos os elementos ch  da STRING

Se ch é um número

Introduz na ch pilha p

Senão

X1 = p.pop();

X2 = p.pop();

P.push( x2 ch x1)

nRetorna p.Pop();

 

Utilizou-se a classe Expression que permite trabalhar a expressão INFIXA. A classe IteratorSstring que nos facilita trabalhar as expressões, permitindo o uso de números com mais de um dígito.