超出空间的额外空间(请看)

时间:2015-10-26 05:28:28

标签: c++

这是我的代码,请编译并帮我弄清楚未排序数字的第一行之前的额外空格来自哪里。我已经花了至少6个小时试图解决这个问题,但我无法做到。很抱歉浪费你的时间,如果这是一个简单的答案。我很感激能得到的所有帮助。谢谢!

http://cpp.sh/7tg5q

1 个答案:

答案 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的问题。您不会显示第二个输入所请求的位数。