【问题标题】:Extract the coefficients of a polynomial with istringstream c++使用 istringstream c++ 提取多项式的系数
【发布时间】:2018-03-26 15:34:20
【问题描述】:

目前我正在做一个项目(即,创建一个多项式类),并且我已经实现了“加减除等”方法。但是我被困在一种方法上,可以从像 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) {}

提前致谢!

【问题讨论】:

  • 听起来您可能需要学习如何使用调试器来单步调试您的代码。使用好的调试器,您可以逐行执行您的程序,并查看它与您期望的偏差在哪里。如果您要进行任何编程,这是必不可少的工具。延伸阅读:How to debug small programs
  • 另外,为什么要在学期末提取sign?这意味着您需要像 2x^3- 这样的最后一个术语才能成功。
  • 这与我是否想做任何编程无关,在这里我有一个问题,如果有人能帮我找出问题所在,我真的很感激,如果你不能,最好不要然后写什么
  • 您的字符串是否包含空格?比如3x^1 -2x^43x^1 - 2x^4。否则,您应该首先检查提取是否单独工作:ideone.com/OgHFOF
  • @Bob__ 这绝对是一件很奇怪的事情,即使您发布的改进代码对我也不起作用,因为我无法进入循环。但是,还是有很多 thnxx

标签: c++ string class polynomials istringstream


【解决方案1】:

是的,最终我发现了问题所在。我在 Mac 上编译,但是当我切换到 Linux 时,它工作得完美无缺。因此,Mac 的解决方案是编写

 cout << endl; 

在代码块的末尾。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-23
    • 2014-03-15
    • 2019-07-05
    • 1970-01-01
    • 2012-11-05
    • 1970-01-01
    • 2014-12-30
    相关资源
    最近更新 更多