C ++计算器,从左到右读取并包含+, - ,/,*

时间:2016-02-16 03:46:22

标签: c++ calculator

我需要创建一个运行单行输入的c ++程序,并从左到右读取它。在输入结束时,用户添加#以表示输入已完成。我让计算器工作,但是如果用户只输入#并点击输入程序,则需要能够抛出错误代码。否则我们可以假设用户正确输入内容。这是我到目前为止的代码。

#include <iostream>
#include <cstdlib>


using namespace std;

int main()
{
    int var1, var2, total;
    char operation;
    cout << "Enter an equation: ";
    cin >> var1;
    /*if (var1 == 0)
    {
        cout << "error";// cant pass in info via char because var1 is
        return 1;       // in the way and using var == 0 technique is
        *               // cheating because then you can't do 0#
    */ 
    else
    {
        do
        {
            cin >> operation;
            if (operation == '#')
            {
                cout << var1;
            }
            else
            {
                cin >> var2;
            }
            if(operation == '+')
            total = var1 + var2;
            else if(operation == '-')
            total = var1 - var2;
            else if(operation == '/')
            total = var1 / var2;
            else if(operation == '*')
            total = var1 * var2;
            var1 = total;
        }while (operation != '#');
    }
    return 0;
}

问题是我知道在做其他事情之前我需要运行cin var 1。反正我是否在不改变输入的情况下抓取输入的第一个字符?我真的不知道还能做什么。如果需要清除任何事情,请询问。

2 个答案:

答案 0 :(得分:1)

更简单的方法是验证用户的输入。所以如果你只接受“+ - * /”那么我建议你创建一个返回错误的检查函数,例如:

bool check(char x)
{
if (x == '+' || x == '-' || x == '*' || x == '/');
else return false;
}

int main()
{
 float total;
 int var1, var2;
 char operation;

//input
do
{
    cout << "Enter an equation: ";
    cin >> var1>> operation>>var2;
    if (check(operation) == false)
        cout << "Error! Unidentified operation symbol..." << endl;
} while (check(operation) == false);


//Process
if (operation == '+')
    total = var1 + var2;
else if (operation == '-')
    total = var1 - var2;
else if (operation == '/')
    total = var1 / var2;
else if (operation == '*')
    total = var1 * var2;

//output
cout << total << endl;

system("pause");
return 0;
}

希望这有助于:)

答案 1 :(得分:0)

为什么不使用反向抛光符号和分流码算法。你可以用它轻松解决这个数学表达式计算。如果你需要我可以提供来源。但它用java编写

我已将我的来源上传到我的驱动器。点击此链接https://drive.google.com/folderview?id=0BxH1JbPpi3XKNWxXeW91VEFGY1E&usp=sharing