Trabalho de calculadora em C
4º Trabalho: Programação básica em C++: Classes
Implementação de uma calculadora RPN (Reversed Polish Notation)
Entrega: 05/abril/2011
Pede-se complementar um programa que implementa uma calculadora RPN. O código incompleto do programa e os arquivos de projeto para o Visual C++ 2008 (VC9) estão disponíveis através do link na internet: http://www.tecgraf.puc-rio.br/ftp_pub/lfm/civ2802-111-trab4-vc9.zip. Para fazer as complementações necessárias é preciso que se entenda completamente o programa fornecido.
Este entendimento faz parte do trabalho.
Pede-se um executável do programa final e os arquivos que foram modificados para implementar o trabalho. Pede-se também, em papel, somente as linhas que foram adicionadas nos arquivos. Estas linhas devem ser indicadas da seguinte forma:
COMPLETE AQUI: XX
LINHAS ADICIONADAS
Arquivo “main.cpp”
#include "rpn.h"
#include "iocalc.h"
// Rotina principal do programa para calculadora RPN (Reversed Polish Notation). int main()
{
RPN *hp = new RPN;
IOcalc io; while(1) { io.prompt(); io.get(); float val; if(io.isNumber(&val)) { hp->enter(val); } else { char c; io.getChar(&c); switch(c)
{
case '+': hp->sum(); break; case '-': hp->sub(); break; case '/': hp->div(); break; case '*': hp->mul(); break; case 'q': delete hp; return 0; default: io.message(IOcalc::MSG_UNKNOWN_OP);
}
} hp->show(); } return 1;
}
2
Arquivo “stack.h”
#ifndef _STACK_H
#define _STACK_H const unsigned int MAX = 50; class StackIterator;
// Classe para pilha de numeros. class Stack {
// Indica classe "friend" para percorrer (interar) elementos da pilha. friend class StackIterator; private: // Atributo: indice do elemento do topo da pilha. int top;
// Atributo: pilha de numeros e' armazenada como um vetor. float *elems; public: // Construtor com parametro default "size" definido pela constante "MAX".
// Inicializa "top" com valor