有人可以向我解释我的代码中的错误在哪里? 这是一个简单的计算器。最终结果是由于某种原因无意义的数字,当它编译时,它甚至不考虑通过“izteiksmju kalkulators”。非常感谢您的帮助!
#include <iostream>
#include <cmath>
#include <string>
using namespace std;
int main()
{
string o,funkcija;
double x,y,l,result;
double Pi = 3.14159265359;
char operators;
cout << "Velaties izmantot aritmetikas vai funkciju kalkulatoru?" << endl;
getline(cin,o);
if (o == "funkciju kalkulators" || "funkciju" || "oo")
{
cout << "ievadiet funkciju:" << endl;
cin >> l;
if (funkcija == "cos") result = (x*Pi/180);
if (funkcija == "sin") result = (x*Pi/180);
if (funkcija == "tan") result = (x*Pi/180);
if (funkcija == "exp") result = exp(x);
if (funkcija == "log") result = log(x);
if (funkcija == "sqrt") result = sqrt(x);
cout << endl;
cout << " " << result;
}
else if (o == "Izteiksmju kalkulators" || "izteiksmi" || "aa")
{
cout << "Ievadiet izteiksmi:" << endl;
cin >> x;
cin >> operators;
cin >> y;
if (operators == '+') result = x+y;
if (operators == '-') result = x-y;
if (operators == '*') result = x*y;
if (operators == '/') result = x/y;
cout << "Rezultats:" << " " << result << endl;
}
else
{
cout << "error" << endl;
}
return 0;
}
答案 0 :(得分:3)
此比较
o == "Izteiksmju kalkulators" || "izteiksmi" || "aa"
不代表你的想法,它会评估后来字符串的布尔值,整个事情总是正确的,而不是你可能的意思
o == "Izteiksmju kalkulators" || o == "izteiksmi" || o == "aa"
您的类似if
表达式
答案 1 :(得分:2)
这里有很多错误。
if (o == "funkciju kalkulators" || "funkciju" || "oo")
这是什么?在所有情况下都是true
,它应该写成:
if (o == "funkciju kalkulators" || o == "funkciju" || o == "oo")
同样:
else if (o == "Izteiksmju kalkulators" || "izteiksmi" || "aa")
应该是:
else if (o == "Izteiksmju kalkulators" || o == "izteiksmi" || o == "aa")
if (funkcija == "cos") result = (x*Pi/180);
if (funkcija == "sin") result = (x*Pi/180);
if (funkcija == "tan") result = (x*Pi/180);
if (funkcija == "exp") result = exp(x);
if (funkcija == "log") result = log(x);
if (funkcija == "sqrt") result = sqrt(x);
funkcija
和x
在哪里初始化?
l
在哪里使用?
cin >> l;
答案 2 :(得分:0)
你似乎忘了初始化x,y,l,结果 直到你做,他们是垃圾。 所以,当x是垃圾时,result = sqrt(x)......会给你垃圾。
另外,当你使用||时你需要为所有三个语句写出整个条件。