嗨,我正在为c ++上的家庭作业编写这个小程序。 它是关于多项式的,它要求多项式的次数,指数,系数和常数乘以系数。 现在我有了这个我一直在做的代码:
#include <iostream>
#include <iomanip>
#include <locale>
#include <sstream>
#include <string>
using namespace std;
int main ()
{
int deg=0, x=0, con, co;
string m, n, poli="";
ostringstream convert, convert1;
cout<<"Hi! this program will show the resulting polynomial of multiplying the \npolynomial times the constant.\n\n";
cout<<" ";
cout<<"\n\nBut first give me the degree of the polynomial (max 9): "; cin>>deg;
cout<<"\n\nNow the Multiplier constant: "; cin>>con;
cout<<"\n\nNow give me the coefficients of the polynomial.\n";
while(deg!=0){
int n1=0, n2=0, n3=0;
string m="", n="";
convert.clear();
convert1.clear();
cout<<"Exponent " << deg <<" coefficient: "; cin >>co; cout<<"\n\n";
if(co!=0){
n2=(co*con);
n3=(deg+0);
convert << n2;
convert1 << n3;
m = convert.str();
n = convert1.str();
poli+=m+"x^"+n+" ";
cout<<poli+"\n\n";
}
deg--;
}
}
但出于某种原因而不是输出让我们说
3x^4 2x^3 2x2
... it out puts
3x^4 32x^43 322x^432
因为你看到它因某种原因连接而且我不知道为什么,你们可以帮助我吗?
答案 0 :(得分:4)
您似乎误解了std::basic_ios::clear`函数的作用。它不清除流缓冲区。这意味着每次你做
convert << n2;
convert1 << n3;
你 追加到流中。
要解决此问题,请将流变量convert
和convert1
置于循环内部,就像m
和n
一样。
答案 1 :(得分:0)
我已声明'ostringstream convert,convert1;'在while循环中,它在这里工作正常。每次while循环迭代后,您的流都没有清除。