我正试图创建一个程序,从文件中提取多项式方程,并将两个多项式相加、相减或相乘(取决于中间的操作数)。然而,我遇到了两个编译器错误,我无法完全理解。
第一个出现在这里:
int** getPolynomial(string polynomial, int &count, string Exponent[], string Coefficient[], int polyArray[][1]){
for (int i = 0; i<100; i++){
for (int n = 0; n<100; n++){
Exponent[n] = atoi(polyArray[n][1]);
}
Coefficient[i] = atoi(polyArray[i][0]);
}
}
当我在行中得到错误"类型为'int*'的参数与类型为'constchar*'不兼容"时Exponent[n] = atoi(polyArray[n][1]);
}
Coefficient[i] = atoi(polyArray[i][0]);
第二个错误发生在下方,
int** add(int **left, int leftCount, int **right, int countRight, int &countResult){
for (int q; q < leftCount; q++){
for (int r = 0; r < 2; r++){
if (left[q][1] == right[q][r]){
countResult[q][0] = left[q][0] + right[q][0];
}
}
}
}
在countResult[q][0] = left[q][0] + right[q][0];
行,编译器注意到第一个q"表达式必须具有指向对象类型的指针",尽管我看不出将q设为指针会有什么帮助。
此处为完整代码:http://pastebin.com/FsM1ydE5.如能在这件事上提供任何帮助,我们将不胜感激。
您的类型有问题:
atoi
返回一个int
,所以您需要将Exponent
和Coefficent
更改为int[]
,或者您需要停止使用atoi
,直接赋值CountResult
是int&
,这意味着它不能被索引。您需要将其设置为int[][]
才能按当前状态使用它
如果没有一些指导,这篇文章将是不完整的:使用vector
s来表示多项式。只要多项式相对密集,就可以使用索引来指示指数,使用值来指示系数。
现在让我们假设我们得到string polyArray[][]
,它分别包含我们的幂和它们的系数在二次阵列的位置0和1。我们想把它读入vector<int> foo
,它将代表我们的多项式。我们可以做:
for(auto& i : polyArray)
if(i[0] > size(foo)){
foo.resize(i[0]);
}
foo[i[0]] = i[1];
}
现在假设我们有两个多项式,我们想求和,比如vector<int> left
和vector<int> right
,我们想把它们求和成一个新构造的多项式:vector<int>countResult
,我们可以这样做:
if(size(left) > size(right)) {
countResult.reserve(size(left));
transform(cbegin(right), cend(right), cbegin(left), begin(countResult), plus<int>());
countResult.insert(end(countResult), next(cbegin(left), size(right)), cend(left));
} else {
countResult.reserve(size(right));
transform(cbegin(left), cend(left), cbegin(right), becing(countResult), plus<int>());
countResult.insert(end(countResult), next(cbegin(right), size(left)), cend(right));
}