我正在研究一个在两个多项式之间执行运算的项目。多项式从文本文件中读入,我将其命名为" functions.txt",并且格式为"(2 * x ^ 2 + 5 * x ^ 4-3 * x )+(6 * X + 2 *的x ^ 3 + X ^ 5)&#34 ;.这些方程式的数量未知,操作可以是' - ',' +'或' '。我已设法读入文件并将每个字符存储到字符数组中。此时,我很难找到数学运算符(' ',' - '或' +') 。我想找到')'在字符串中并立即取出字符并将其存储到mathOperator中;如果'之后的角色'不是' \ 0'。然而,这似乎不起作用,因为它返回" &#34 ;.任何建议和帮助都非常感谢。这就是问题所在:
if(polyFile.good())
{
while(!polyFile.eof() && counter < MAX_SIZE)
{
polyFile.get(polyArray[counter]);
++counter;
}
polyArray[counter - 1] = '\0';
for(int i = 0; i < polyFile.eof(); ++i)
{
if(polyArray[i] = ')')
{
polyArray[i + 1] = mathOperator;
cout << mathOperator;
}
}
}
else
{
cout << "The file could not be opened." << endl;
}
答案 0 :(得分:1)
此块中存在一些问题
for(int i = 0; i < polyFile.eof(); ++i)
{
if(polyArray[i] = ')')
{
polyArray[i + 1] = mathOperator;
cout << mathOperator;
}
}
1 /在for循环中,你想使用i&lt;反而不是polyFile.eof()
2 /在if语句中,你可能想使用if(!strcmp(polyArray [i],&#34;)&#34;)); &#34; =&#34;是一个赋值运算符,而不是比较运算符
3 /这一行:
polyArray[i + 1] = mathOperator;
意味着您将mathOperator分配给polyArray [i + 1],而不是将polyArray [i + 1]中的任何内容存储到mathOperator中。这就是你想要的:
mathOperator = polyArray[i + 1];
答案 1 :(得分:0)
这一行
for(int i = 0; i < polyFile.eof(); ++i)
应该使用counter
来完成数组
for(int i = 0; i < counter - 1; ++i)