使用atoi的错误("类型' int *'的参数与类型' const char *'")不兼容并添加数组

时间:2016-04-29 16:43:00

标签: c++ compiler-errors

我尝试创建一个程序,该程序从文件中提取多项式方程,并将两个多项式相加,相减或相乘(取决于中间操作数)。但是,我得到了两个编译器错误,我无法理解。

首先发生在这里:

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。任何有关此事的帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您的类型遇到问题:

  1. atoi会返回int,因此您需要将ExponentCoefficent更改为int[],否则您需要停止使用{ {1}}并直接分配值。
  2. atoiCountResult,表示无法编入索引。您需要将其设为int&才能使用它。
  3. 如果没有指示,此帖子将不完整:使用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