我的任务:
编写以下程序:要求用户输入2个浮点数(使用双精度数)。然后要求用户输入以下数学符号之一:
+
,-
,*
或/
。程序计算用户输入的两个数字的答案并打印结果。如果用户输入无效符号,程序应该不打印任何内容。
我的代码:
#include <iostream>
using namespace std;
int introducir()
{
int a;
cin >> a;
return a;
}
bool simbolo(char x)
{
if (x == '+')
return true;
if (x == '-')
return true;
if (x == '*')
return true;
if (x == '/')
return true;
return false;
}
void operar(char x, int a, int b)
{
if (x == '+')
cout << a+b;
if (x == '-')
cout << a-b;
if (x == '*')
cout << a*b;
if (x == '/')
cout << a/b;
else cout << "INVALID OPERATION SIMBOL";
}
int main()
{
cout << "insert 2 numbers"<< endl;
int a =introducir();
int b= introducir();
cout << "introduce one of these simbols : +,-,* o /." << endl;
char x;
cin >> x;
bool primo= simbolo(x);
{
if (primo) {
cout << "simbol is valid" << endl;
} else {
cout << "invalid simbol" << endl;
}
cout << "operation result is:";
}
operar(x,a,b);
}
如果符号不在(+
,-
,*
,/
)中,我希望它返回一条消息&#34;无效操作SIMBOL&# 34 ;;但即使符号有效,它也会返回它。我该如何解决这个问题?
答案 0 :(得分:3)
您编写的方式,else
仅适用于最终if
。
更改为
if (x == '+'){
cout << a+b;
} else if (x == '-'){
cout << a-b;
} else if (x == '*'){
cout << a*b;
} else if (x == '/'){
cout << a/b;
} else {
cout << "INVALID OPERATION SIMBOL";
}
和其他if
语句类似。 (你甚至可以考虑重构switch
块。)括号并不是完全必要的,但为了清楚起见,我已将它们放入。
答案 1 :(得分:-1)
Otraopciónesñadirreturn
para cada if
,de esta formatufunciónoperar
terminarácuandose cumplaalguncudición。
if (x == '+'){
cout << a+b;
return;
} else if (x == '-'){
cout << a-b;
return;
} else if (x == '*'){
cout << a*b;
return;
} else if (x == '/'){
cout << a/b;
return;
} else {
cout << "INVALID OPERATION SIMBOL";
}