我无法正确地重载输入操作符以允许用户输入可变数量的数据。该对象是一个多项式数组,它在其度数的索引下保存系数。因此,如果输入是5 6 2 3 1 4 -3
,则5存储在索引6,2处3,1处4和-3处0。我有一个set_ceoff()函数,可以根据需要插入和调整大小,但我们的指导员具体要求不要求终止字符来读取输入。到目前为止,这是我所拥有的代码,基于我在互联网上找到的信息,并且在编码时它起作用,然后几天后我回到代码中,现在它在我输入相同的数据后就中断了我以前用过。 (这是我完成并提交作业后几天的信心......所以现在我有点恐慌:S)
这是我的重载>>操作者:
friend istream& operator >>(istream& input, Polynomial& arr) {
// variables to hold input values
int coeff = 0;
int power = 0;
// read input, inserting values into poly and power, then into arr, if
// successful
while (true) {
if (input >> coeff) {
if (input >> power) {
arr.set_coeff(coeff, power);
}
else {
arr.set_coeff(coeff, 0);
break;
}
}
else {
break;
}
}
return input;
}
任何帮助都表示赞赏,我不希望得到答案,但正确方向上的一点将会很棒!谢谢!
答案 0 :(得分:0)
我误读了指令,输入的第一个值是它之后的整数,所以我抓住第一个值并通过输入循环多次以获取其余值。
int nums = 0;
int value = 0;
input >> nums;
for (int i = 0; i < nums; i++) {
input >> value;
pArray.set_coeff(i,value);
}
感谢所有的帮助,抱歉混淆!