Ir para conteúdo
Fórum Script Brasil
  • 0

Ajudem a melhorar minha calculadora


HMind

Pergunta

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 para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,2k
×
×
  • Criar Novo...