удалить выходное пространство в C ++ - PullRequest
0 голосов
/ 03 марта 2019

Я новичок в языке cpp.Я пытался решить проблему на сортировке вставки.Тем не менее, ошибка представления произошла при отправке на судью онлайн.в программе я должен показать промежуточную последовательность в строке для каждого шага сортировки вставки.Вот мой код:

void InsertionSort(int *arr, int n)
{

for (int i = 1; i < n; i++)
{
    int key = arr[i];
    int j = i - 1;
    while (j >= 0 && arr[j] > key)
    {

        arr[j + 1] = arr[j];
        j--;
    }

    arr[j + 1] = key;
    for (int k = 0; k < n; k++)
        cout << arr[k] << " ";
    cout << endl;
}}

Вывод:

1 2 3<Here is space.want to remove it> 
1 2 3<Here is space.want to remove it>

Заранее спасибо.

1 Ответ

0 голосов
/ 03 марта 2019

Не std::cout << arr[k] << ' ' все n элементы.Примените это к каждому , за исключением последнего .Затем выведите этот элемент, но вместо него следует пробел, за которым следует '\n' или std::endl, предпочтительно прежний:

for (int k = 0; k < n - 1; k++)
    cout << arr[k] << " ";
cout << arr[n - 1] << '\n';

Обратите внимание на n - 1 вместо n в состоянии for().Это применимо к телу для всех элементов , за исключением последнего .

Затем нам нужно обработать последний элемент (представленный n - 1 -ым индексом) по-другому - мы не будемне хочу его печатать с последующим " ", но ратар переводит на новую строку.Вот почему мы делаем << '\n';.Обратите внимание, что std::endl тоже будет работать, но в этом нет необходимости.Я рекомендую вам прочитать о std::endl против '\n'.

...