01. Fill the Matrix - Print the matrix problem


0

Здравейте колеги,

Натъкнах се на един проблем при решаването на пъравата задача от домашното за Multidimensional Arrays - Fill the Matrix. Успях да попълня матрицата и по 4-те дадени варианта, но при принтирането използвам for цъкъл и форматиране на стринга:

for (int i = 0; i < matrix.GetLength(0); i++) { for (int j = 0; j < matrix.GetLength(1); j++) { Console.Write("{0} ", matrix[i, j]); } Console.WriteLine(); }

Но при този варинт получавам 0 от 100, заради интервала, който се получава след последния принтиран елемент на всеки ред. Успях да реша проблема като въведа един if дали това е последния елемнт за реда, но се чудех дали има по хитър вариант за принтирането на такъв масив с интервали между елементите, но без интервал след последния елемент на всеки ред. Идеи?




Отговори



0

Здравей!

Ето моят вариянт :

for (int i = 0; i < matrix.GetLength(0); i++) { for (int j = 0; j < matrix.GetLength(0); j++) { Console.Write(matrix[i, j]); if (j + 1 == matrix.GetLength(0)) { break; } else { Console.Write(" "); } } Console.WriteLine(); } }

Успех! :)


от encho.enevski (316 точки)


1
for (int i = 0; i < matrix.GetLength(0); i++) { List<int> row = new List<int>(); for (int j = 0; j < matrix.GetLength(1); j++) { row.Add(matrix[i, j]); } Console.WriteLine(string.Join(" ", row)); }

от ndvalkov (60 точки)


0

Нещо не мога да разбера как да ги изпиша 1,5,9,13 и т.н.

for (int row = 0; row < matrix.GetLength(0); row++) { for (int col = 0; col < matrix.GetLength(1); col++) { matrix[row, col] = num; Console.WriteLine("{0} ", num); num++; } Console.WriteLine(); } break;

Успявам да ги изпиша едно под друго 1,2,3,4 и не знам как първия елемент от следващата колона (т.е. 5) да е на първия ред.


от SPENS03 (82 точки)

0

Console.WriteLine("{0} ", num); -> това трябва да е Console.Write("{0} ", num); 

Махаш Line , защото ти печата нов ред :D


от encho.enevski (316 точки)



0

Колеги някой има ли престава, защо Console.WriteLine(String.Join(" ", numbers)) не работеше за моят код?

static void Main() { int N = int.Parse(Console.ReadLine()); char letter = (char)Console.Read(); int[,] matrix = new int[N, N]; int currentNumber = 1; if (Char.ToUpper(letter).Equals('A')) { for (int col = 0; col < N; col++) { for (int row = 0; row < N; row++) { matrix[row, col] = currentNumber; currentNumber++; } } // The printing part of scenario A for (int row = 0; row < N; row++) { for (int col = 0; col < N; col++) { Console.Write("{0}{1}", matrix[row, col], col == N - 1 ? '\n' : ' '); } } }




0
Много полезно!!!



0
Здравейте, имам проблем с принтирането на последния интервал, системата ми отчита празното място като грешка. Някакви предложения как да го премахна? Благодаря.
using System; namespace ConsoleApplication2 { class Program { static void Main() { int N = int.Parse(Console.ReadLine()); string znak = Console.ReadLine(); int[,] matrix = new int[N, N]; if (znak == "a") { for (int row = 0; row < matrix.GetLength(0); row++) { int number = row + 1; for (int col = 0; col < matrix.GetLength(1); col++) { matrix[row, col] = number; Console.Write("{0} ",number); number = number + N; } Console.WriteLine(); } } }

от trey_bg (70 точки)


1

Console.Write("{0}{1}", number, col == N - 1 ? '\n' : ' '); и си ти. Точно мнението над твоето съм писал по този въпрос :)

ПС: Респективно махаш Console.WriteLine(); долу, защото горното го покрива.



1
@trey_bg : 
 Вариант 1 : Махни интервала от Console.Write("{0} ",number); Пиши го след това с отделен  Console.Write(" "); но само ако колоната не е последна.

Вариант 2 : по-лесен - аз пиша интервал преди елемента, освен ако е първия   
   if (col > 0) Console.Write(' ');
    Console.Write("{0}", matrix[row, col]);

от milen100 (15 точки)