Advertisement
jacknpoe

Calculadora com polimorfismo em tempo de execução em C++

Feb 4th, 2024 (edited)
971
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.42 KB | Source Code | 0 0
  1. #include <iostream>
  2. #include <locale.h>
  3.  
  4. using namespace std;
  5.  
  6. // CLASSE PAI "Operacao"
  7. class Operacao {
  8.     public: virtual double operacao(double num1, double num2) {};
  9. };
  10.  
  11. // CLASSES FILHAS
  12. class Soma: public Operacao {
  13.     public: virtual double operacao(double num1, double num2) { return num1 + num2; };
  14. };
  15.  
  16. class Subtracao: public Operacao {
  17.     public: virtual double operacao(double num1, double num2) { return num1 - num2; };
  18. };
  19.  
  20. class Multiplicacao: public Operacao {
  21.     public: virtual double operacao(double num1, double num2) { return num1 * num2; };
  22. };
  23.  
  24. class Divisao: public Operacao {
  25.     public: virtual double operacao(double num1, double num2) { return num1 / num2; };
  26. };
  27.  
  28. // MAIN
  29. int main(){
  30.     double numero1, numero2;
  31.     int operacaoSelecionada;
  32.  
  33.     Operacao* operacoes[4];
  34.     operacoes[0] = new Soma();
  35.     operacoes[1] = new Subtracao();
  36.     operacoes[2] = new Multiplicacao();
  37.     operacoes[3] = new Divisao();
  38.  
  39.     setlocale( LC_ALL, "");     // caracteres acentuados
  40.  
  41.     cout << "Escolha uma operação: 0: adição, 1: subtração, 2: multiplicação, 3: divisão: ";
  42.     cin >> operacaoSelecionada;
  43.     if(operacaoSelecionada < 0 || operacaoSelecionada > 3) {
  44.         cout << "Operação incorreta!" << endl;
  45.         return -1;
  46.     }
  47.    
  48.     cout << "Número 1: ";
  49.     cin >> numero1;
  50.  
  51.     cout << "Número 2: ";
  52.     cin >> numero2;
  53.    
  54.     cout << "Resultado: " << operacoes[operacaoSelecionada]->operacao(numero1, numero2) << endl;
  55.    
  56.     return 0;
  57. }
  58.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement