Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 按两条对角线翻转数组_C#_Multidimensional Array - Fatal编程技术网

C# 按两条对角线翻转数组

C# 按两条对角线翻转数组,c#,multidimensional-array,C#,Multidimensional Array,我想知道如何通过将数组传递到一个方法中,通过它的两条对角线翻转数组。我有它,所以我可以翻转它的每一个对角线自己,但我不知道如何让它在一次去做这两个 以下是通过主对角线翻转的数组: static int[,] flipDiag(int[,] originArray, int size) { int[,] flippedArray = new int [size, size]; for (int row = 0; row < size; row++) {

我想知道如何通过将数组传递到一个方法中,通过它的两条对角线翻转数组。我有它,所以我可以翻转它的每一个对角线自己,但我不知道如何让它在一次去做这两个

以下是通过主对角线翻转的数组:

static int[,] flipDiag(int[,] originArray, int size)
{
    int[,] flippedArray = new int [size, size];


    for (int row = 0; row < size; row++)
    {
        for (int col = 0; col < size; col++)
        {
            flippedArray[row, col] = originArray[col, row];
        } 
    }

    return flippedArray;
}
for (int row = 0; row < size; row++)
{
    for (int col = 0; col < size; col++)
    {
        flippedArray[row, col] = originArray[(size-1) - col, (size-1) - row];
    } 
}
将输出到:

1 8 3
6 5 4
7 2 9

如果是这样,是否必须使用某种形式的temp变量或使用两个独立循环的temp数组来完成此操作?

如果我理解正确,此代码就是您想要的:(我使用字母以提高可读性。)


当然,用相应大小的数组替换这些5s和4s。

这两种操作都不会产生结果,它会将数组旋转180度,从而产生
[[9,8,7],[6,5,4],[3,2,1]
。如果你想得到这个结果,你必须解释你是如何得到它的,这样它就可以用一个算法来表达。你的输出例子是不是错了?1不应该在右下角,3不应该在左下角吗?@Guffa:对不起,我的意思是说我可以做任何一个,或者,两者结合仍然不能给我想要的结果。对于Martin Heralecký来说:示例输出确实是我想要的,但我可能描述错了。我希望两条对角线保持不变,并将其他所有东西翻转180度?如果数组的宽度和高度不是奇数,结果会是什么?例如,对于5x5数组
{abcde}{fghhij}{klmno}{pqrst}{uvwxy}
,远离对角线的四个小三角形会发生什么情况?它们是反射的还是翻转的?谢谢!这正是我想要的。很抱歉有人试图理解我的描述。我选词不好。
1 8 3
6 5 4
7 2 9
char[,] array =
{
    { 'A', 'B', 'C', 'D', 'E' },
    { 'F', 'G', 'H', 'I', 'J' },
    { 'K', 'L', 'M', 'N', 'O' },
    { 'P', 'Q', 'R', 'S', 'T' },
    { 'U', 'V', 'W', 'X', 'Y' },
};

char[,] flippedArray = (char[,])array.Clone();

for (int row = 0; row < 5; row++)
{
    for (int col = 0; col < 5; col++)
    {
        // wheter this isn't diagonal
        if (row != col && row + col != 4)
            flippedArray[row, col] = array[4 - row, 4 - col];
    }
}
A X W V E
T G R I P
O N M L K
J Q H S F
U D C B Y