Задать вопрос
@michadimin

Как найти диагонали матрицы относительно второстепенной с левой стороны?

Требуется:
Найти все диагонали матрицы относительно второстепенной по левую её сторону, включая саму второстепенную диагональ
Надо сделать всё так, чтобы была возможность в любой момент дать условный индекс диагонали относительно второстепенной. Сама второстепенная диагональ - обозначается индексом 0

Если из описания не понятно, то вот что я имею ввиду
637a3b7cda9c7588851114.png

Я почти смог это сделать, но будь всё прекрасно - сюда бы не писал.
Алгоритм работает, в общих чертах, как надо, но последний элемент каждой диагонали упускается!

Вот код, который я написал
Код

public class CSharpLearning
{
	static void Main()
	{
        Random rand = new Random();

        int diagNum = 0;
        int N = 5;
        int[,] array = new int[N, N];

        for (int i = 0; i < N; i++)
        {
            for (int j = 0; j < N; j++)
            {
                array[i, j] = rand.Next(10, 99);
                Console.Write(array[i, j] + " ");
            }
            Console.WriteLine();
        }

        int[] result = new int[N];
        int k = 0;
        for (int i = 0, j = (diagNum == 0) ? N - 1 : N - diagNum - 1; j > 0; ++i, --j)
        {
            result[k] = array[i, j];
            k++;
        }

        Console.WriteLine("Выбранная диагональ");
        foreach (int i in result)
        {
            Console.Write(i + " ");
        }
    }

}



Что я только не пробовал, чтобы исправить эту небольшую проблему - всё бестолку, либо я что-то упустил...
  • Вопрос задан
  • 183 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
Alexeytur
@Alexeytur
j >= 0
for (int i = 0, j = (diagNum == 0) ? N - 1 : N - diagNum - 1; j >= 0; ++i, --j)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы