как извлечь коэффициенты и показатель степени многочлена в виде строки - PullRequest
0 голосов
/ 04 ноября 2018

привет, моя проблема в том, что мне нужно извлечь коэффициенты и экспоненты полинома, заданного пользователем. когда я попробовал свой код, он просто работал для коэффициента, а для экспоненты это дает мне ноль. 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 голосов
/ 04 ноября 2018

Вам необходимо инициализировать буферы коэффициентов и экспоненты с нулевыми терминаторами, чтобы они правильно заканчивались нулем, когда консоль вывода их читает.

#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;
}
...