我尝试创建一个程序,该程序从文件中提取多项式方程,并将两个多项式相加,相减或相乘(取决于中间操作数)。但是,我得到了两个编译器错误,我无法理解。
首先发生在这里:
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]);
}
}
我在哪里收到错误&#34;类型&#39; int *&#39;与类型&#39; const char *&#39;不兼容&#34;就行了
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&#34;表达式必须具有指针对象类型&#34;,虽然我无法看到如何制作qa指针有助于。
此处的完整代码:http://pastebin.com/FsM1ydE5。任何有关此事的帮助将不胜感激。
答案 0 :(得分:1)
您的类型遇到问题:
atoi
会返回int
,因此您需要将Exponent
和Coefficent
更改为int[]
,否则您需要停止使用{ {1}}并直接分配值。atoi
是CountResult
,表示无法编入索引。您需要将其设为int&
才能使用它。如果没有指示,此帖子将不完整:使用vector
来表示多项式。只要多项式相对密集,就可以使用索引来指示指数和指示系数的值。
现在让我们说我们给出int[][]
,它们分别包含我们的次幂数据的位置0和1的幂和它们的系数。我们想把它读成string polyArray[][]
,它代表我们的多项式。我们可以这样做:
vector<int> foo
现在假设我们给出了2个我们想要求和的多项式,比如说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