如何将多项式的系数和指数提取为字符串

时间:2018-11-04 18:24:41

标签: c++ extract polynomials

你好,我的问题是我必须提取用户给定的多项式的系数和指数。  当我尝试我的代码时,它仅适用于系数,而对于指数,则为零。 p.s a仅用于测试

int main() {
    char x[10];
    char y[10];

    char a[100] = "53x2+4x^3";
    for (int i = 0; a[i] != '+'; i++)
    {
        if (a[i] != 'x')
        {
            x[i] = a[i];
        }

    }
    for (int i = 0; a[i] != '+'; i++)
    {

        if ((a[i] == 'x') && (a[i + 1] == '^')) {
            y[i] = a[i + 2];
        }
    }
    double w;
    int z;

    w = atof(x);
    z = atoi(y);

    cout << w << endl;
    cout << z << endl;


    return 0;
}

1 个答案:

答案 0 :(得分:0)

您需要使用空终止符初始化系数缓冲区和指数缓冲区,以使它们在输出控制台读取它们时正确以空终止。

#include <iostream>

using namespace std;

int main() {
    char x[10] = {'\0'};
    char y[10] = {'\0'};

    char a[100] = "53x^2+4x^3";
    for (int i = 0, j = 0; a[i] != '+'; i++)
    {
        if (a[i] != 'x')
        {
            x[j] = a[i];
            j++;
        }

    }
    for (int i = 0, j = 0; a[i] != '+'; i++)
    {

        if ((a[i] == 'x') && (a[i + 1] == '^')) {
            y[j] = a[i + 2];
            j++;
        }
    }
    double w;
    int z;

    w = atof(x);
    z = atoi(y);

    cout << w << endl;
    cout << z << endl;


    return 0;
}