C++ 如何测试方程式的用户输入?
我有一个包含4个变量的方程,我会提示用户输入其中的每一个变量,然后程序根据输入的变量和需要求解的变量来决定。例如,给定变量a和b,我需要求解b和c。我正试图想出一种方法,让程序决定哪些变量已经输入,哪些还没有输入。到目前为止,我一直在想:C++ 如何测试方程式的用户输入?,c++,C++,我有一个包含4个变量的方程,我会提示用户输入其中的每一个变量,然后程序根据输入的变量和需要求解的变量来决定。例如,给定变量a和b,我需要求解b和c。我正试图想出一种方法,让程序决定哪些变量已经输入,哪些还没有输入。到目前为止,我一直在想: int a,b,c,d; char unknown; cout<<"****This program decides which variables to solve for****\n; cout<<"Please enter the
int a,b,c,d;
char unknown;
cout<<"****This program decides which variables to solve for****\n;
cout<<"Please enter the known variables below, if a variable is unknown,
please enter a'?'\n"
cout<< "please enter variable a\n";
cin>>a;
cout<< "please enter variable b\n";
cin>>b;
etc....
if (a =='?'){
check b,c,d}
if (b =='?'){
check c,d}
inta、b、c、d;
字符未知;
cout您发布的伪代码不起作用,因为>x
其中x
是一个int
将尝试将用户的输入解释为一个整数的规范。因此,当用户键入?
时,发生的情况是操作失败,cin
处于失败状态,并且忽略进一步的输入操作,直到或如果该失败状态被清除
一种解决方法是使用
标题中的std::getline
,一次将一行输入std::string
。当您有输入行时,您可以检查它是否是问号(或者更简单,只是空的)。如果没有,您可以尝试使用例如std::istringstream
(如我在
标题中所述)将用户的号码规范转换为int
即使您可能会发现,正如“Potatoswatter”所评论的那样,您这样做的问题可能相当复杂,但让这部分工作起来还是很有启发性的
干杯
–Alf这里真正的问题不是I/O,而是如何表示变量和存储方程式。你有没有为这方面写过代码?嗯,它主要基于哪些变量是已知的,哪些是未知的。必须根据已知的变量重新安排方程式。因此,对于已知的每个变量,它都有不同的情况。(切换运算符?)IO也有问题,因为您不能在int
变量上使用运算符>
,而希望在其中得到一个“?”
,这是一个字符。相反,您应该使用getline
获取整行,并使用istringstream
单独处理它。