使用 atoi ( "argument of type 'int*' is incompatible with type 'const char*' " ) 和添加数组时出错



我正试图创建一个程序,从文件中提取多项式方程,并将两个多项式相加、相减或相乘(取决于中间的操作数)。然而,我遇到了两个编译器错误,我无法完全理解。

第一个出现在这里:

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.如能在这件事上提供任何帮助,我们将不胜感激。

您的类型有问题:

  1. atoi返回一个int,所以您需要将ExponentCoefficent更改为int[],或者您需要停止使用atoi,直接赋值
  2. CountResultint&,这意味着它不能被索引。您需要将其设置为int[][]才能按当前状态使用它

如果没有一些指导,这篇文章将是不完整的:使用vectors来表示多项式。只要多项式相对密集,就可以使用索引来指示指数,使用值来指示系数。

现在让我们假设我们得到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> leftvector<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));
}

相关内容

最新更新