我需要创建一个运行单行输入的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。反正我是否在不改变输入的情况下抓取输入的第一个字符?我真的不知道还能做什么。如果需要清除任何事情,请询问。
答案 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