11

I think this might be a pretty simple question, but I haven't been able to figure it out yet. If I've got a 2-dimensional array like so:

int[,] matris = new int[5, 8] { 
       { 1, 2, 3, 4, 5,6,7,8 }, 
       {9,10,11,12,13,14,15,16},
       { 17,18,19,20,21,22,23,24 },
       { 25,26,27,28,29,30,31,32 },
       { 33,34,35,36,37,38,39,40 },

        };

and a for loop, like this:

  for (int r = 0; r < 5; r++)
        {

            for (int j = 0; j < 8; j++)
                Console.Write("{0} ", matris[r, j]);

            Console.WriteLine();
        }

So with this code I am printing out the multi dimensional array. But how do I print out a transpose of the array?

User
  • 1,118
  • 7
  • 23
user2669196
  • 165
  • 2
  • 3
  • 9

2 Answers2

18

Just change your loops with each other:

for (int j = 0; j < 8; j++)
{
    for (int r = 0; r < 5; r++)
        Console.Write("{0} ", matris[r, j]);

    Console.WriteLine();
}

Creating new array:

var newArray = new int[8, 5];
for (int j = 0; j < 8; j++)
    for (int r = 0; r < 5; r++)
        newArray[j, r] = matris[r, j];
MarcinJuraszek
  • 124,003
  • 15
  • 196
  • 263
10

You just need to do this:

for (int r = 0; r < 8; r++)
{
    for (int j = 0; j < 5; j++)
        Console.Write("{0} ", matris[j, r]);
    Console.WriteLine();
}
Anna
  • 538
  • 2
  • 4
  • 13
  • oh, posted too late! It's pretty much the same solution that @MarcinJuraszek posted :) – Anna Aug 21 '13 at 22:26
  • I would say this is the right answer. People just rush into up-voting. – ataravati Aug 21 '13 at 22:28
  • @ataravati It's exactly the same as mine :) Just variables names replaced. – MarcinJuraszek Aug 21 '13 at 22:34
  • @MarcinJuraszek It is exactly the same, but you have switched the variables in the original question, which may give the wrong impression (to the beginners) that two sets of loops are required to achieve this. And, your comment is actually misleading too. – ataravati Aug 21 '13 at 22:39