в настоящее время я работаю над проектом (а именно, создаю класс многочлена), и я уже реализовал методы «сложение-вычитание-разделение и т. д.». Но я застрял на методе перехода от такой строки 3x ^ 1-2x ^ 4 к вектору коэффициентов, например 0 3 0 0 4.
Итак, вот код:
string s;
cin >> s;
istringstream iss(s);
double coeff;
char x, sym;
int degree;
vector<double> coefficients;
int i = 0;
while (iss >> coeff >> x >> sym >> degree) {
//if (sign == '-') coeff *= -1;
if (degree == i) {
cout << coeff << i;
coefficients.push_back(coeff);
++i;
}
else {
for (int j = i; j < degree; ++j) {
coefficients.push_back(0);
}
coefficients.push_back(coeff);
++i;
}
Polynomial p (coefficients);
p.write();
Кстати, я использую istringstream, но, к сожалению, по какой-то причине он не работает, и я не могу понять, что не так с моим кодом?? «Полином p (коэффициенты)» кажется пустым в конце. Может что-то с конструкторами?
Polynomial::Polynomial (const vector<double>& coeff)
: coeff(coeff)
{}
// Constructor from string.
Polynomial::Polynomial (const string& spoly) : spoly(spoly) {}
Заранее спасибо!
sign
в конце термина? Это означает, что вам нужен последний термин, такой как2x^3-
, чтобы он был успешным. - person NathanOliver   schedule 26.03.20183x^1 -2x^4
или3x^1 - 2x^4
. В противном случае вам следует сначала проверить, работает ли извлечение изолированно: ideone.com/OgHFOF. - person Bob__   schedule 27.03.2018