Programação estruturada em C#: Diagonal Principal

Lucas Matheus Gonçalves Ferreira

vocÊ vai aprender 

como obter os elementos da diagonal principal.

como obter os elementos abaixo da diagonal principal.

como obter os elementos acima da diagonal principal.

pré-requisitos

Lógica de programação

Estruturas de repetição

Estrutura condicional

identificando a diagonal principal

Considere a seguinte matriz 4x4:

    |1   2   3   4|
M = |5   6   7   8|
    |9   1   2   3|
    |4   5   6   7|

Tomando-a como base, podemos perceber que existem elementos posicionados de tal maneira, que nos permitem identificar uma diagonal atravessando toda a matriz:

    |1️⃣   2   3   4|
M = |5   6️⃣   7   8|
    |9   1   2️⃣   3|
    |4   5   6   7️⃣|

Essa diagonal é denominada como "Diagonal principal"

fragmento de código widget

condição de existência

Para uma matriz possuir diagonal principal, é necessário que a mesma seja uma matriz quadrada. Ou seja, o número de linhas da matriz deve ser igual ao número de colunas.

Exemplo 1:

    |1   2   3   4|
M = |5   6   7   8|
    |9   1   2   3|
    

Uma matriz 3x4 não é uma matriz quadrada, por isso não apresenta diagonal principal, já que o número de linhas é menor do que o número de colunas.

Exemplo 2:

    |1️⃣   2   3   4|
M = |5   6️⃣   7   8|
    |9   1   2️⃣   3|
    

Uma matriz 3x3 é uma matriz quadrada, por isso apresenta diagonal principal já que o número de linhas é igual ao número de colunas.



fragmento de código widget

Para especificar essa condição no código, basta fazer:

static void Main(string[] args)
        {
            int l, c;

            Console.WriteLine("Informe a quantidade de linhas da matriz:");
            l = int.Parse(Console.ReadLine());
            Console.WriteLine("Informe a quantidade de colunas da matriz:");
            c = int.Parse(Console.ReadLine());

            int[,] matriz = new int[l, c];



            if (l == c) // se a linha for igual a coluna, o programa ira preencher a matriz
            {
                for (int i = 0, i < l, i++)
                {
                    for (int j = 0, j< c, j++)
                    {
                        Console.WriteLine("Informe o numero para prencher a matriz:");
                        matriz[i, j] = int.Parse(Console.ReadLine());
                    }
                }
            }
            else// se a condição for falsa, a mesagem ira aparecer na tela
            {
                Console.WriteLine("as dimensoes nao representam uma matriz quadrada!");
            } 

        }


fragmento de código widget

obtendo os elementos da diagonal principal

Para mostrar na tela somente os elementos da diagonal principal, devemos usar uma estrutura de repetição.

Se os índices I e J forem iguais, o programa irá imprimir o elemento na tela.

Se os índices forem diferentes, o programa irá imprimir um "X" no lugar do elemento correspondente.

Como no exemplo:

for (int i = 0; i < l; i++)
            {
                Console.Write("\n");
                for (int j = 0; j < c; j++)
                {
                    if (i == J)
                    {
                        Console.Write(" " + matriz[i, j] + " | ");
                    }
                    else
                    {
                        Console.Write(" x | ");
                    }
                }
            }


obtendo os elementos abaixo da diagonal principal

Para mostrar na tela somente os elementos abaixo da diagonal principal, e necessário mudar a condição da estrutura.

Se o índice i(linha) for maior que o índice j(coluna), o programa irá imprimir o elemento na tela.

Se o índice i(linha) não for maior que o índice j(coluna), o programa irá imprimir um "X" no lugar do elemento correspondente.

Como no exemplo:

for (int i = 0; i < l; i++)
            {
                Console.Write("\n");
                for (int j = 0; j < c; j++)
                {
                    if (i > j) // note que foi alterado o sinal da condição
                    {
                        Console.Write(" " + matriz[i, j] + " | ");
                    }
                    else
                    {
                        Console.Write(" x | ");
                    }
                }
            }


obtendo os elementos acima da diagonal principal

Para mostra na tela somente os elementos acima da diagonal principal, basta alterarmos a condição da estrutura, assim como no exemplo anterior.

Se o índice i(linha) for menor que o índice j(coluna), o programa irá imprimir o elemento na tela.

Se o índice i(linha) não for menor que o índice j(coluna), o programa irá imprimir um "X" no lugar do elemento correspondente.

Dessa forma:

for (int i = 0; i < l; i++)
            {
                Console.Write("\n");
                for (int j = 0; j < c; j++)
                {
                    if (i < j) // note que foi alterado novamente o sinal da condição
                    {
                        Console.Write(" " + matriz[i, j] + " | ");
                    }
                    else
                    {
                        Console.Write(" x | ");
                    }
                }
            }


Voltar