Programa simples com erro que não reconheço!

1. Programa simples com erro que não reconheço!

Gael Medeiros Melo
gaeloow

(usa Ubuntu)

Enviado em 21/07/2016 - 14:22h

Olá galera! Tudo bem?

Eu sou novato no c/c++, e, como o tal, pensei em fazer o código de uma calculadora:
#include <iostream>
#include <locale.h>

using namespace std;

int main(void){
setlocale(LC_ALL,"portuguese");
cout << "digite aqui o primeiro número que deseja adicionar a sua conta:\n\n";
int numero1;
cin >> numero1;
voltar:
cout << "\n\nagora digite o operador da sua conta:\n\n";
string operador;
cin >> operador;
if ( operador != "x""X""*""+""/""-") {
cout << "\n\n Desculpe, mas este não é um dos operadores presentes neste programa.\n\n";
goto voltar;
}
string acaoop;
if (operador == "x" || "X" || "*")acaoop = "multiplicar";
if (operador == "+")acaoop = "somar";
if (operador == "-")acaoop = "subtrair";
if (operador == "/")acaoop = "dividir";
int resultado;
cout << "\n\ndigite, por último, o número que deseja " << acaoop << " do primeiro:";
int numero2;
cin >> numero2;
if (operador == "x" || "X" || "*")resultado=numero1*numero2;
if (operador == "+")resultado=numero1+numero2;
if (operador == "-")resultado=numero1-numero2;
if (operador == "/")resultado=numero1/numero2;
cout << "O resultado de sua conta é: " << resultado;
}

Quando tento usar o programa, as contas que possuem + não funcionam, como 1+1, que no programa, dá 1! (sei que a parte " if ( operador != "x""X""*""+""/""-") " está errada, mas não sei como consertar );

Antes de tudo, muito obrigado!


  


2. Re: Programa simples com erro que não reconheço!

Uilian Ries
uilianries

(usa Linux Mint)

Enviado em 21/07/2016 - 15:02h

Você está tentando comparar tudo de uma vez só, isso não é inválido.

 if ( operador != "x""X""*""+""/""-") { 


Deveria ser algo como:

if ((operador != "x") ||
(operador != "X") ||
(operador != "*") ||
(operador != "+") ||
(operador != "/") ||
(operador != "-")) {


Está faltando o operador OU para cada comparação.

Sinceramente, pode capturar esse operador, utilizando um simples char


char operador;
std::cin >> operador;


Uma possível e tosca solução para esse problema seria algo como:

#include <iostream>

int main()
{
double primeiro;
std::cout << "Digite o primeiro número: ";
std::cin >> primeiro;

char operador;
std::cout << "Digite um operador [* + - /]: ";
std::cin >> operador;

double segundo;
std::cout << "Digite o segundo número: ";
std::cin >> segundo;

double resultado(0);
switch (operador) {
case '+':
resultado = primeiro + segundo;
break;
case '-':
resultado = primeiro - segundo;
break;
case '*':
resultado = primeiro * segundo;
break;
case '/':
resultado = primeiro / segundo;
break;
default:
std::cout << "Operador inválido" << std::endl;
}

std::cout << "Resultado da operação é: " << resultado << std::endl;

return 0;
}






3. Re: Programa simples com erro que não reconheço!

Gael Medeiros Melo
gaeloow

(usa Ubuntu)

Enviado em 21/07/2016 - 16:41h

uilianries escreveu:

Você está tentando comparar tudo de uma vez só, isso não é inválido.

 if ( operador != "x""X""*""+""/""-") { 


Deveria ser algo como:

if ((operador != "x") ||
(operador != "X") ||
(operador != "*") ||
(operador != "+") ||
(operador != "/") ||
(operador != "-")) {


Está faltando o operador OU para cada comparação.

Sinceramente, pode capturar esse operador, utilizando um simples char


char operador;
std::cin >> operador;


Uma possível e tosca solução para esse problema seria algo como:

#include <iostream>

int main()
{
double primeiro;
std::cout << "Digite o primeiro número: ";
std::cin >> primeiro;

char operador;
std::cout << "Digite um operador [* + - /]: ";
std::cin >> operador;

double segundo;
std::cout << "Digite o segundo número: ";
std::cin >> segundo;

double resultado(0);
switch (operador) {
case '+':
resultado = primeiro + segundo;
break;
case '-':
resultado = primeiro - segundo;
break;
case '*':
resultado = primeiro * segundo;
break;
case '/':
resultado = primeiro / segundo;
break;
default:
std::cout << "Operador inválido" << std::endl;
}

std::cout << "Resultado da operação é: " << resultado << std::endl;

return 0;
}



ata hehehe valeu, é que, como disse sou novato, e nunca fiz curso! Vou testar o código e mando se deu certo (:








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts