我如何在C ++中从右到左编写一个数组

How can i write an array starting from right to left in C++

我不想反转或移动数组。我要的是数组从右往左写。

我做了类似的事情

int arr[5] = {0};
for (int i = 0; i < 5; i++)
{
    cout << "enter a number : ";
    cin >> arr[i];
    for (int j = 0; j < 5; j++)
    {
        if (arr[j] != 0)
        {
            cout << arr[j] << " ";
        }
        else
            cout << "X ";
    }
    
    cout << endl;
    
}

在输出屏幕上我看到了这个

enter a number : 5
5 X X X X
enter a number : 4
5 4 X X X
enter a number : 3
5 4 3 X X
enter a number : 2
5 4 3 2 X
enter a number : 1
5 4 3 2 1
Press any key to continue . . .

但是我想看这个

enter a number : 5
X X X X 5
enter a number : 4
X X X 5 4
enter a number : 3
X X 5 4 3
enter a number : 2
X 5 4 3 2
enter a number : 1
5 4 3 2 1
Press any key to continue . . .

我该怎么做?

如果你有帮助我会很高兴

我认为你每次都试图写入最后一个索引,然后将数组中的每个数字向后移动?

要写入最后一个索引,请使用 cin >> arr[4]。 然后在打印出数组后将每个值复制到前一个索引中。确保你的文案只在 J 指数小于 4

int arr[5] = {0};
for (int i = 0; i < 5; i++)
{
    cout << "enter a number : ";
    //write into the last position
    cin >> arr[4];

    for (int j = 0; j < 5; j++)
    {
        if (arr[j] != 0)
        {
            cout << arr[j] << " ";
        }
        else
            cout << "X ";
        
        //don't go out of bounds. This should move each number to the previous index
        if(j<4){
            arr[j]=arr[j+1];
        }
    }
    
    cout << endl;
    
}

只需更改内部 for 循环,例如按以下方式

int j = 5;

for ( ; j != 0 && arr[j-1] == 0; --j )
{
    std::cout << 'X' << ' ';
}

for ( int k = 0; k != j; k++ )
{
    std::cout << arr[k] << ' ';
}