我正在做一个在两个多项式之间进行运算的项目。多项式从我命名为"functions.txt“的文本文件中读取,其形式为"(2*x^2+5*x^4-3*x)+(6*x+2*x^3+x^5)”。这些方程的数量未知,操作可以是“-”、“+”或“”。我已设法读取文件,并将每个字符存储到字符数组中。此时,我很难找到数学运算符(“”、“-”或“+”)。我想,在字符串中找到')‘,并将它后面的字符立即保存到mathOperator中;如果')’后面的字符不是'\0‘。然而,这似乎不起作用,因为它返回“”。如有任何建议和帮助,将不胜感激。以下是问题所在:
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;
}
发布于 2014-05-07 02:15:49
这个街区有一些问题
for(int i = 0; i < polyFile.eof(); ++i)
{
if(polyArray[i] = ')')
{
polyArray[i + 1] = mathOperator;
cout << mathOperator;
}
}
1/在for循环中,您希望使用i<计数器而不是polyFile.eof()
在if语句中,您可能希望使用if(!strcmp(polyArrayi,“)”);"=“是赋值操作符,而不是比较运算符。
[3]这一行:
polyArray[i + 1] = mathOperator;
这意味着您将mathOperator分配给polyArrayi+1,而不是将polyArrayi+1中的任何内容存储到mathOperator中。这是你想要的:
mathOperator = polyArray[i + 1];
发布于 2014-05-07 02:06:37
这条线
for(int i = 0; i < polyFile.eof(); ++i)
应该使用counter
来遍历数组
for(int i = 0; i < counter - 1; ++i)
https://stackoverflow.com/questions/23507491
复制相似问题