这是我的代码,请编译并帮我弄清楚未排序数字的第一行之前的额外空格来自哪里。我已经花了至少6个小时试图解决这个问题,但我无法做到。很抱歉浪费你的时间,如果这是一个简单的答案。我很感激能得到的所有帮助。谢谢!
答案 0 :(得分:0)
问题出在第36和39行。
在这种情况下,std :: setw和std :: setprecision仅对下一个数字起作用。换句话说
std::cout << std::setw(3) << 10 << std::endl;
std::cout << 10;
将输出
10
10
第一个前面没有额外的空间。相反,第二个缺乏空间。
重新定义您的打印功能:
void printArray( double array[], int numberOfValues, int numberPerLine, int spaces, int digits );
这样称呼:
printArray( array, numberOfValues, numberPerLine, spaces, digits );
将setw和setprecision行添加到相应的cout语句中:
for (i = 1; i <= numberOfValues; i++) {
if ( i % numberPerLine == 0 ) {
cout << setw(spaces) << setprecision(digits) << array[i-1] << endl;
} else {
cout << setw(spaces) << setprecision(digits) << array[i-1] << "\t";
}
}
一切都是正确的。请注意,这仍然无法解决缺少std :: fixed的问题。您不会显示第二个输入所请求的位数。