在 C++ 中将 3 变量方程拆分为双精度和字符
Split a 3-variable equation into doubles and characters in C++
我正在做一个方程式作业,但我不知道如何输入方程式的不同部分。
等式的格式始终为:
[双][x/y/z][符号][双][x/y/z][符号][双][x/y/z]=[双].
一个例子:2.5y+4.7x+7z=46
为此,我尝试使用四个双精度变量和六个字符变量。
双 a,d,g,j;
char b,c,e,f,h,i;
这样方程就分解成变量 a b c d e f g h i,然后我可以对其进行操作。
如果等式中的任何地方有空格,我本可以使用 istringstream 来拆分它们,但没有。我不允许更改输入文件。
我怎样才能把数字变成双打,letters/symbols 变成字符?
您可以使用 istringstream 和流外运算符。
例如:
std::istringstream iss("2.5y+4.7x+7z=46");
double a,b,c,s;
char v1,v2,v3;
iss >> a; // read 1st koef
iss >> v1; // read 1st var's name
iss >> b; // read 2nd koef
iss >> v2; // read 2nd var's name
iss >> c; // read 3rd koef
iss >> v3; // read 3rd var's name
iss.ignore(); // skip '=' symbol
iss >> s; // read sum
等式中的符号是相关系数的符号。
我正在做一个方程式作业,但我不知道如何输入方程式的不同部分。
等式的格式始终为: [双][x/y/z][符号][双][x/y/z][符号][双][x/y/z]=[双].
一个例子:2.5y+4.7x+7z=46
为此,我尝试使用四个双精度变量和六个字符变量。
双 a,d,g,j;
char b,c,e,f,h,i;
这样方程就分解成变量 a b c d e f g h i,然后我可以对其进行操作。
如果等式中的任何地方有空格,我本可以使用 istringstream 来拆分它们,但没有。我不允许更改输入文件。
我怎样才能把数字变成双打,letters/symbols 变成字符?
您可以使用 istringstream 和流外运算符。 例如:
std::istringstream iss("2.5y+4.7x+7z=46");
double a,b,c,s;
char v1,v2,v3;
iss >> a; // read 1st koef
iss >> v1; // read 1st var's name
iss >> b; // read 2nd koef
iss >> v2; // read 2nd var's name
iss >> c; // read 3rd koef
iss >> v3; // read 3rd var's name
iss.ignore(); // skip '=' symbol
iss >> s; // read sum
等式中的符号是相关系数的符号。