Отпечатване на матрица


0

Здравейте!

Знам, че не е нещо трудно, но не мога да разбера защо този код започва да отпечатва нули в матрицата на мястото на числата, които трябва да се отпечатят?

Console.Write("Enter n: ");
            int n = int.Parse(Console.ReadLine());
            int[,] matrix = new int[n, n];
            int number = 1;
            for (int row = 0; row < n; row++)
            {
                for (int col = 0; col < n; col++)
                {
                    matrix[col, row] = number;
                    number++;
                    Console.Write(matrix[row, col] + "\t");
                }
                Console.WriteLine();
            }
 
Ако е matrix[row, col] = number; си я отпечатва както трябва, но трябва цифрите да нарастват не по ред, а по колона.



Отговори



1
защото редът и колоната са разменени при задаването на стойност и при отпечатването им. Тоест задаваш стойност на matrix[0,1], а отпечатваш matrix[1,0], на което още не си задал нищо. Пробвай да разделиш задаването на стойностите и отпечатването им в два отделни цикъла.

от ttitto (1950 точки)


2

Въвеждаш number в [col , row] a четеш веднага [row, col] от там идва проблема

промени го на :

 matrix[row, col] = number++;
  Console.Write(matrix[row, col]);



2

Колега не се мъчи да я отпечатваш направо. Инициализирай си елементите на матрицата и след това ги отпечатай с отделен цикъл или по добре с отделен метод.

Console.Write("Enter n: ");
            int n = int.Parse(Console.ReadLine());
            int[,] matrix = new int[n, n];
            int number = 1;
            for (int row = 0; row < n; row++)
            {
                for (int col = 0; col < n; col++)
                {
                    matrix[col, row] = number;
                    number++;
                }
            }
 
И след това:
for(int i = 0; i < n; i++)
{
   for(int j = 0; j < n; j++)
   { 
        Console.Write(matrix[row, col] + "\t");
   }
Console.WriteLine();
}
 
 
Cheers!

от CaptCortez (1242 точки)


0
Console.Write("Enter n: "); int n = int.Parse(Console.ReadLine()); int[,] matrix = new int[n, n]; int number = 1; for (int row = 0; row < n; row++) { for (int col = 0; col < n; col++) { matrix[row, col] = number; number++; //Console.Write(matrix[row, col] + "\t"); } //Console.WriteLine(); } for (int row = 0; row < n; row++) { for (int col = 0; col < n; col++) { Console.Write(matrix[col, row] + "\t"); } Console.WriteLine(); }
Така се получи. Благодаря на всички!

от ivan8004 (32 точки)