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

我有一个包含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 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
单独处理它。