Good afternoon, I needed help with a c++ calculator

Asked

Viewed 55 times

-1

I made this program to calculate areas and perimeters of geometric shapes, but when I press "a", "b" or "c" to choose whether you want to make areas or perimeters the program just closes. Follows the code:

#include <iostream>
#include <cmath>
#include <locale> 
#include <stdlib.h>
using namespace std;
  
    double PerimetroQuadrado (double Lado) {
        return 4 * Lado;
    }
    double AreaQuadrado (double Lado) {
        return Lado * Lado;
    }
    double PerimetroRetangulo (double Comprimento, double Altura) {
        return Comprimento*2 + Altura*2;
    }
    double AreaRetangulo (double Comprimento, double Altura) {
        return Comprimento * Altura;
    }
    double PerimetroCirculo (double Raio) {
        return 2 * M_PI * Raio;
    }
    double AreaCirculo (double Raio) {
        return M_PI * pow(Raio,2);
    }
    double PerimetroTriangulo (double Base, double Altura) {
        double hipotenusa = hypot(Base , Altura);
        return Base + Altura + hipotenusa;
    }
    double AreaTriangulo (double Base, double Altura) {
        return Base * Altura / 2;
    }
    double PerimetroTrapezio (double BaseMaior, double BaseMenor, double Altura) {
        double Hipotenusa = hypot((BaseMaior - BaseMenor) / 2 , Altura);
        return BaseMenor + BaseMaior + 2 * Hipotenusa;
    }
    double AreaTrapezio (double BaseMaior, double BaseMenor, double Altura) {
        return (BaseMenor + BaseMaior) * Altura / 2;
    }
    
    int main (){
        setlocale(LC_ALL, "");
      
        cout << "Cálculo de Perímetros e Áreas. \n";
        cout << "Escolha uma das seguintes opcões: \n";
        cout << "\t a- Perímetro \n";
        cout << "\t b- Área \n";
        cout << "\t c- Sair \n";
        
        
        int num1 , num2 , num3; 
        char op;
        cin >> op;
        char pr;
        char ar;
        switch(op){
             case 'a': 
             case 'A': 
             break;
             cout << "Cálculo de Perímetros e Áreas. \n";
             cout << "Escolha uma das seguintes opcões: \n";
             cout << "\t 1- Quadrado \n";
             cout << "\t 2- Retângulo \n";
             cout << "\t 3- Círculo \n";
             cout << "\t 4- Triângulo Retângulo \n";
             cout << "\t 5- Trapézio \n";
             cout << "\t 6- Voltar \n";
             cout << "\t 7- Sair \n";
             cin >> pr;
                switch(pr) {
                case '1': cout << "Introduza o Valor do Lado do Quadrado:";
                          cin >> num1;
                          cout << PerimetroQuadrado(num1);
                          break;
                case '2': cout << "Introduza o Valor do Comprimento do Retângulo:";
                          cin >> num1;
                          cout << "Introduza o Valor da Altura do Retângulo:";
                          cin >> num2;
                          cout << PerimetroRetangulo(num1, num2);
                          break;
                case '3': cout << "Introduza o Valor do Raio do Círculo:";
                          cin >> num1;
                          cout << PerimetroCirculo(num1);
                          break;
                case '4': cout << "Introduza o Valor da Base do Triângulo:";
                          cin >> num1;
                          cout << "Introduza o Valor da Altura do Triângulo:";
                          cin >> num2;
                          cout << PerimetroTriangulo(num1, num2);
                          break;
                case '5': cout << "Introduza o Valor da Base Maior do Trapézio:";
                          cin >> num1;
                          cout << "Introduza o Valor da Base Menor do Trapézio:";
                          cin >> num2;
                          cout << "Introduza o Valor da Altura do Trapézio:";
                          cin >> num3;
                          cout << PerimetroTrapezio(num1, num2 , num3);
                          break;
                case '6': 
                break;
                }
        
             case 'b': 
             case 'B': 
             break;
             cout << "Cálculo de Perímetros e Áreas. \n";
             cout << "Escolha uma das seguintes opcões: \n";
             cout << "\t 1- Quadrado \n";
             cout << "\t 2- Retângulo \n";
             cout << "\t 3- Círculo \n";
             cout << "\t 4- Triângulo Retângulo \n";
             cout << "\t 5- Trapézio \n";
             cout << "\t 6- Voltar \n";
             cout << "\t 7- Sair \n";
             cin >> ar;
              switch(ar) {
              case '1': cout << "Introduza o Valor do Lado do Quadrado:";
                          cin >> num1;
                          cout << AreaQuadrado(num1);
                          break;
                case '2': cout << "Introduza o Valor do Comprimento do Retângulo:";
                          cin >> num1;
                          cout << "Introduza o Valor da Altura do Retângulo:";
                          cin >> num2;
                          cout << AreaRetangulo(num1, num2);
                          break;
                case '3': cout << "Introduza o Valor do Raio do Círculo:";
                          cin >> num1;
                          cout << AreaCirculo(num1);
                          break;
                case '4': cout << "Introduza o Valor da Base do Triângulo:";
                          cin >> num1;
                          cout << "Introduza o Valor da Altura do Triângulo:";
                          cin >> num2;
                          cout << AreaTriangulo(num1, num2);
                          break;
                case '5': cout << "Introduza o Valor da Base Maior do Trapézio:";
                          cin >> num1;
                          cout << "Introduza o Valor da Base Menor do Trapézio:";
                          cin >> num2;
                          cout << "Introduza o Valor da Altura do Trapézio:";
                          cin >> num3;
                          cout << AreaTrapezio(num1, num2 , num3);
                          break;
                case '7': exit (0);
                break;
                
              case 'c':
              case 'C': exit (0);
              break;
              default: cout << "Inválido";
              break;
              }
    
        }
        return 0;
    }   
  • You’re making break soon upon entering the conditions a/A and b/B switch. This stops running the switch immediately, before running its logic.

1 answer

0


The problem is occurring because soon after entering the conditions of your switch case you’re giving a break:

...
switch(op){
             case 'a': 
             case 'A': 
        >>>  break;
...

The function of break is just coming out of an instruction (in your case, the switch case) and go to another. As your code has no further instructions after the switch case (one for, or a while, or even another switch, etc) it is closed.

To solve the problem just remove these breaks which are just after the conditions of the switch (both of the case a how much of b).

Browser other questions tagged

You are not signed in. Login or sign up in order to post.