То, что Вы массив вывели как матрицу, не значит , что Вы создали матрицу. В обычном случае матрица инициализируется двойным циклом, где внешний считает строки, а внутренний колонки. При повороте, просто меняете местами - внешний считает колонки, а внутренний строки.
static void Main(string[] args)
{
var str = "ВРАГ БУДЕТ РАЗБИТ";
str = str.Replace(" ", string.Empty);
char[] array = str.ToCharArray();
var columnCount = 5;
var rowCount = array.Length / columnCount;
if (rowCount * columnCount < array.Length)
{
++rowCount;
}
// Создаем перевернутую матрицу
var invertedArray = new char[rowCount, columnCount];
var counter = 0;
for (var i = 0; i < columnCount; i++)
{
for (var j = 0; j < rowCount; j++)
{
invertedArray[j, i] = array[counter++];
}
}
// Выводим матрицу на экран стандартным способом
for (var j = 0; j < rowCount; j++)
{
for (var i = 0; i < columnCount; i++)
{
Console.Write(invertedArray[j, i]);
}
Console.WriteLine();
}
Console.ReadKey();
}