C++ 使用atoi(';int*';类型的“参数”与类型';const char*&';)和添加数组时出错

C++ 使用atoi(';int*';类型的“参数”与类型';const char*&';)和添加数组时出错,c++,compiler-errors,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

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

第一种情况发生在这里:

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]);

}
}

在行
countResult[q][0]=左[q][0]+右[q][0],其中编译器注意到第一个q“表达式必须具有指向对象类型的指针”,尽管我看不出将q设为指针会有什么帮助


此处的完整代码:。在此问题上的任何帮助都将不胜感激。

您的类型有问题:

  • 返回一个
    int
    ,因此您需要将
    指数
    系数
    更改为
    int[]
    ,或者您需要停止使用
    atoi
    直接赋值
  • CountResult
    是一个
    int&
    ,这意味着它不能被索引。您需要将其设置为
    int[][]
    ,才能按当前状态使用它

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

    现在让我们假设我们得到了
    string polyArray[][]
    ,它包含我们的幂和它们的系数,分别位于辅助数组的0和1位置。我们想把它读入表示多项式的向量foo。我们可以这样做:

    for(auto& i : polyArray)
        if(i[0] > size(foo)){
            foo.resize(i[0]);
        }
        foo[i[0]] = i[1];
    }
    
    现在让我们假设有两个多项式要求和,比如说
    向量左
    向量右
    ,我们要把它们求和成一个新构造的多项式:
    向量计数结果
    ,我们可以这样做:

    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));
    }
    
    if(尺寸(左)>尺寸(右)){
    countResult.reserve(大小(左));
    转换(cbegin(右)、cend(右)、cbegin(左)、begin(countResult)、plus();
    insert(end(countResult)、next(cbegin(左)、size(右)、cend(左));
    }否则{
    countResult.reserve(大小(右));
    变换(cbegin(左)、cend(左)、cbegin(右)、becing(countResult)、plus());
    insert(end(countResult)、next(cbegin(右)、size(左)、cend(右));
    }
    
    错误信息非常清楚,不是吗<代码>多阵列[i][0]
    不是所需的
    const char*
    类型。但我正在尝试将数组“cofficient”中的字符串转换为数组“polyArray”中的整数。两个数组的位置是否混淆了?赋值运算符将右边的值赋值给左边的var。这是一种基本的东西。听起来你在和风车作战:-P.停止使用原始数组和指针。仔细看看。我想我可以利用这些信息来解决当我有字符串时需要使用const char*的问题。你知道countResult中的q是怎么回事吗?显然,它是一个指针?我试着在for循环中简单地将其更改为一个,但正如预期的那样,由于循环是如何构建的,这确实没有帮助。
    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));
    }