C ++基本计算器。初学者

时间:2015-06-11 22:57:56

标签: c++

有人可以向我解释我的代码中的错误在哪里? 这是一个简单的计算器。最终结果是由于某种原因无意义的数字,当它编译时,它甚至不考虑通过“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;
}

3 个答案:

答案 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);

funkcijax在哪里初始化?

l在哪里使用?

cin >> l;

答案 2 :(得分:0)

你似乎忘了初始化x,y,l,结果 直到你做,他们是垃圾。 所以,当x是垃圾时,result = sqrt(x)......会给你垃圾。

另外,当你使用||时你需要为所有三个语句写出整个条件。