【发布时间】:2018-10-01 11:24:27
【问题描述】:
在C++中,是否可以使用变量输入运算符(如“-、+、*、/”),然后在计算中使用?
例子:
cin>>(input operator here)
cout<< i (inputted operator here) b;
目前我已经通过使用“开关”来完成它,它很长而且对眼睛非常不友好 - 我坚信有一种输入运算符的方法,但我不知道如何。
这是我编写的代码 - 如果可能,请按照我询问的方式修复它(并说明你是如何完成的!)。 非常感谢您的帮助:)。
#include <iostream>
#include <string>
using namespace std;
bool wantedModifyed=0;
string choice;
char operato;
template<typename T>
T get(const string &prompt)
{
std::cout<<prompt;
T ret;
std::cin>>ret;
return ret;
}
void modifier()
{
if (!(choice=="Y" || choice=="y" || choice=="N" || choice=="n"))
{
cout<<"Y or N: ";
cin>>choice;
modifier();
}
if (choice=="Y" || choice=="y")
{
wantedModifyed=1;
}
}
void operatorChecker()
{
if (!(operato=='+' || operato=='-' || operato=='*' || operato=='/'))
{
operato=get<char>("\nEnter your modifier (+,-,*,/): ");
operatorChecker();
}
}
int OperatorPlus(int a, int c){return a+c;}
int OperatorMinus(int a, int c){return a-c;}
int OperatorMultiply(int a, int c){return a*c;}
int OperatorDivide(int a, int c){return a/c;}
int main()
{
int a,b;
a=get<int>("\nEnter number A: ");
b=get<int>("\nEnter number B: ");
if(a>b) swap(a,b);
modifier();
if(wantedModifyed==0)
for(int i=a; i<=b; i++)
if(i==b) cout<<i<<". ";
else cout<<i<<", ";
else
{
get<char>("\nEnter your operator (+,-,*,/): ");
operatorChecker();
int modifier=get<int>("\nEnter your modifier: ");
for(int i=a; i<=b; i++)
{
switch(operato)
{
case '+':
cout<<OperatorPlus(i,modifier);
if(i==b) cout<<".";
else cout<<", "; break;
case '-':
cout<<OperatorMinus(i,modifier);
if(i==b) cout<<".";
else cout<<", "; break;
case '*':
cout<<OperatorMultiply(i,modifier);
if(i==b) cout<<".";
else cout<<", "; break;
case '/':
cout<<OperatorDivide(i,modifier);
if(i==b) cout<<".";
else cout<<", "; break;
}
}
}
return 0;
}
【问题讨论】:
-
您可能想在互联网上搜索“c++ 计算器”,看看是否可行。请记住,您需要考虑优先级。
-
顺便说一句,如果在比较之前将字符响应转换为全大写或全小写,则可以将比较减少 50%!见
toupper和tolower。 -
您可以通过删除
template来简化您的程序。 C++ I/O 流将为您处理匹配的数据类型(它是内置的)。 -
不建议对提示或菜单使用递归。使用
while或do-while。 -
@ThomasMatthews 你是说不可能以任何方式输入运算符吗?我熟悉超基本的开关计算器,但我非常怀疑没有一种方法可以使用 cin 输入运算符...也许是一些库?
标签: c++ performance io sequence