Jump to content
Fórum Script Brasil
  • 0

Ajudem a melhorar minha calculadora


HMind

Question

Eu comecei a estudar C++ semana passada e estou com muitas dúvidas, olhem:

#include <iostream>
#include <string>
#include <sstream>
using namespace std;

double soma(double soma1,double soma2)
{
    double somatotal;
    somatotal=soma1+soma2;
    return(somatotal);
}

double menos(double menos1,double menos2)
{
    double menostotal;
    menostotal=menos1-menos2;
    return(menostotal);
}

double divisao(double div1,double div2)
{
    double divtotal;
    divtotal=div1/div2;
    return(divtotal);
}

double mult(double mult1,double mult2)
{
    double multtotal;
    multtotal=mult1*mult2;
    return(multtotal);
}

int main()
{
    double a;
    double b;
    string c;
    double x;
    
    contaprincipal:
    cout << "Qual operacao deseja executar? (+ ... - ... * ... /)\n";
    cin >> c;
    cout << "Digite o primeiro valor:\n";
    cin >> a;
    cout << "Digite o segundo valor:\n";
    cin >> b;
    
    if (c=="+")
    {
         x=soma(a,b);
         cout << "O resultado e: " << x << ".\n";
    }
    
    else if (c=="-")
    {
         x=menos(a,b);
         cout << "O resultado e: " << x << ".\n";
    }
    
    else if (c=="/")
    {
         x=divisao(a,b);
         cout << "O resultado e: " << x << ".\n";
    }
    
    else if (c=="*")
    {
         x=mult(a,b);
         cout << "O resultado e: " << x << ".\n";
    }
    
    else cout << "Operacao invalida.\n";
    
    novaop:
    cout << "Deseja fazer uma nova operacao? (s/n)\n";
    cin >> c;
    if (c=="s") goto contaprincipal;
    
    else if (c=="n") system("pause");
    
    else goto novaop;
    
    return 0;
}
1 - Eu gostaria de saber como eu uso apenas uma variável para executar as operações? Tipo... Eu não queria as variáveis somatotal, menostotal, divtotal e multtotal. Eu queria apenas uma chamada total . É possível fazer isso? 2 - Nessa parte:
contaprincipal:
cout << "Qual operacao deseja executar? (+ ... - ... * ... /)\n";
cin >> c;
Eu queria colocar um IF depois do cin >> c, que funcionaria mais ou menos assim:
if (c!=+ ou - ou * ou /) 
{
cout << "Operacao invalida";
goto contaprincipal;
}
else if (c==+)...

O problema é que eu não sei como armazenar o +,-,* e / ao mesmo tempo no IF, eu só sei armazenar 1 de cada.

3 - O que mais eu poderia adicionar/melhorar na calculadora?

Valeu!

Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 0

1:

double operacao(double numero1, double numero2, string *operacao)
{
    double vreturn;
    switch(operacao)
    {
         case '+':     
             vreturn = numero1 + numero2;
             break;
         case '-':
             vreturn = numero1 - numero2;
             break;
         case '/':
             vreturn = numero1 / numero2;
             break;
         case '*':
             vreturn = numero1 * numero2;
             break;
         case default:
             vreturn = 53.99292;
             break;
     }
     return vreturn;
}
2:
resultado = operacao(a, b, c);
if(resultado == 53.99292) {
   cout << "Operacao invalida";
   goto contaprincipal;
}

Explicação:

Coloquei uma flag de erro no primeiro código, assim caso não for nenhuma operação, ele retorna o valor double "53.99292", tem que ser um número bem difícil de "dar certo" pra usar como flag. Tem outros jeitos de fazer, mas nesse caso (e o melhor que pude pensar agora) é este.

3:

Sin, Cos, Tan, cálculo de x², x³, etc.

Abraços.

Link to comment
Share on other sites

  • 0

Pô, valeu cara!

Mas eu já arrumei de um outro jeito, olha só:

contaprincipal:
    cout << "Qual operacao deseja executar? (+ ... - ... * ... /)\n";
    cin >> c;
    if (c!="+" && c!="-" && c!="/" && c!="*")
    {
               cout << "Operacao invalida.\n";
               goto novaop;
    }

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152k
    • Total Posts
      651.5k
×
×
  • Create New...