Zadanie ze SPOJ - transponowanie macierzy

0

Cześć! mam problem z tym zadaniem:
http://pl.spoj.com/problems/TRN/
Mój kod:

using System;
 
public class Test
{
	public static void Main()
	{
		int m, n;
            int x1, x2, x3;
            string[] b = Console.ReadLine().Split(' ');
            m = Convert.ToInt32(b[0]);
            n = Convert.ToInt32(b[1]);
            int[,] macierz = new int[m, n];
            string g = "", h;
            int[,] tab3 = new int[0, 0];
            for (int k = 0; k < m; k++)
            {
                string[] a = Console.ReadLine().Split(' ');
                x1 = Convert.ToInt32(a[0]);
                x2 = Convert.ToInt32(a[1]);
                x3 = Convert.ToInt32(a[2]);
                g = x1 + "\n" + x2 + "\n" + x3+"\n";
                Console.Write(g);
            }
 
            Console.ReadKey();
	}
}

Wypisuje wszystko pod sobą, ale nie wiem jak zrobić aby "dokleił" resztę do siebie. Czy mogę liczyć na jakąś małą podpowiedź?

1

Nie możesz dokleić. Wypisywanie na konsolę pochodzi z czasów, kiedy do tego celu służyły drukarki, a papier przesuwał się w jedną stronę. Po przejściu do nowej linii nie było możliwości powrotu. Co prawda teraz konsole mają jakieś rozszerzenia, które na to zezwalają, ale zasadniczo działają tak jak dawniej drukarki i wypisują linia po linii.
Wg mnie trzeba zapamiętać całą macierz, a potem wypisać po kolei jej kolumny wierszami. Pamięci jest wystarczająco, aby to się udało.

2

wpisujesz rzędami i wypisujesz kolumnami, nie ma potrzeby konwersji liczb na inty

string[][] matrix = new string[m][];
for (int r = 0; r < m; r++)
{
    matrix[r] = Console.ReadLine().Split(' ');
}
for (int c = 0; c < n; c++)
{
    for (int r = 0; r < m; r++)
        Console.Write("{0} ", matrix[r][c]);
    Console.WriteLine();
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1