@Vetka_in_code

Как развернуть матрицу(С#)?

Имеется строка с каким-либо белибердой. Эта строка должна как-то превратиться в массив... у меня получилось вот так(я новичок в С#, не знаю всех фишек этого языка).
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;

namespace Rextester
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var str = "ВРАГ БУДЕТ РАЗБИТ";
            str = str.Replace(" ", string.Empty);//удаляем пробелы

            char[] array = str.ToCharArray();//строка ----> массив

            for (int i = 0; i < array.Length; i += 3)//надо перевернуть матрицу...
            {
                Console.Write(array[i] + " ");
                for (int j = i + 1; j < i + 3; j++)
                {
                    Console.Write(array[j] + " ");
                }
                Console.WriteLine(" ");
            }
            Console.WriteLine(" \n");
        }
    }
}

При этом массив превращается в матрицу, а в примере надо повернуть эту матрицу, так как это сделать?
Для наглядности приведу пример со строкой из кода....
Исходная матрица:
В Р А
Г Б У
Д Е Т
Р А З
Б И Т

Ожидание:
В Г Д Р Б
Р Б Е А И
А У Т З Т
  • Вопрос задан
  • 621 просмотр
Решения вопроса 1
@kttotto
пофиг на чем писать
То, что Вы массив вывели как матрицу, не значит , что Вы создали матрицу. В обычном случае матрица инициализируется двойным циклом, где внешний считает строки, а внутренний колонки. При повороте, просто меняете местами - внешний считает колонки, а внутренний строки.
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();
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы