2015-10-26 2 views
-5

Вот мой код, пожалуйста, скомпилируйте и помогите мне разобраться, где это дополнительное пространство перед первой строкой несортированных номеров. Я потратил не менее 6 часов, пытаясь понять это, и я не могу. Извините за то, что потратил свое время, если это простой ответ. Я ценю всю помощь, которую я могу получить. Спасибо!Дополнительное пространство, появившееся из ниоткуда (пожалуйста, смотрите)

http://cpp.sh/7tg5q

+1

Я ввел 2,2,3, и все выглядит нормально. Вам нужно будет объяснить, что вы ожидаете *. – nvoigt

+1

Добро пожаловать в переполнение стека. Я предлагаю вам воспользоваться [tour] (http://stackoverflow.com/tour) с особым вниманием к [«Как задать хороший вопрос?»] (Http://stackoverflow.com/help/how-to -просить). В частности, вы должны опубликовать свой код, а не ссылку на свой код. – Beta

ответ

0

Проблема заключается в строках 36 и 39.

В этом случае, станд :: setw и станд :: 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. Вы не будете показывать количество цифр, запрошенных вторым входом.

+0

Большое вам спасибо! –