2013-08-21 15 views
8

Myślę, że to może być dość proste pytanie, ale nie byłem w stanie tego rozgryźć. Jeśli mam 2-wymiarowa tablica tak:Jak transponować tablicę wielowymiarową?

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 }, 

     }; 

a dla pętli, podobnie jak to:

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

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

      Console.WriteLine(); 
     } 

Więc z tym kodem mam drukując wielu tablicę wymiarową. Ale jak wydrukować transpozycję macierzy?

+2

Co masz na myśli przez „transponent "? To nie jest termin, z którym miałem do czynienia wcześniej. –

+0

Czy potrafisz zdefiniować _transponent_? –

+0

Być może oznacza on transpozycję? http://pl.wikipedia.org/wiki/Transpose –

Odpowiedz

16

Wystarczy zmienić swoje pętle ze sobą:

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

    Console.WriteLine(); 
} 

Tworzenie nowej tablicy:

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]; 
+0

yeeah ok teraz widzę, co zrobiłem źle .. Ale jeśli chcę zapisać transpose matris w nowej tablicy? – user2669196

9

Po prostu trzeba to zrobić:

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

oh, wysłano zbyt późno! To prawie to samo rozwiązanie, które @MarcinJuraszek wysłał :) – Anna

+0

Naprawdę wdzięczny za odpowiedź tak! :) – user2669196

+0

Powiedziałbym, że to właściwa odpowiedź. Ludzie po prostu śpieszą się w górę. – ataravati

Powiązane problemy