Jump to content
Fórum Script Brasil
  • 0

Valores da diagonal de uma matriz 4x4


ezbueno

Question

Olá, pessoal!

Estou fazendo um programa simples para mostrar alguns valores de uma matriz 4x4, conforme a escolha através de um menu. Gostaria de saber como eu faço para imprimir os valores da diagonal principal da seguinte maneira:

Exemplo de impressão na tela

1

        1

                1

                         1

 

Abaixo está somente a parte do código que faz a impressão dos valores da diagonal principal

 

if (opcao == 2){
        for (l = 0; l < 4; l++){
            printf ("\n%d", mat[l][l]);
        }
        cout << "\n";
    }

Porém, a impressão é mostrado da seguinte maneira: Ex:

1

1

1

1

Alguém poderia me ajudar? Muito obrigado.

 

 

 

 

 

Link to post
Share on other sites

7 answers to this question

Recommended Posts

  • 0
8 horas atrás, britivaldo disse:

Boa dia @ezbueno

O número de espaços antes da informação é igual ao numero (índice) da linha na informação.

Exatamente. A ideia é escrever espaços para deslocar os números e alinha-los diagonalmente. Para o primeiro número, 0 espaços, para o segundo, 1 espaço, para o terceiro, 2 espaços. Note que acaba sendo o índice da coluna daquele número a quantidade de espaços necessários antes dele. Você também pode adotar um espaçamento maior, como 2 espaços a cada linha, de forma a compatibilizar melhor o espaçamento vertical e horizontal. 

Edited by Hazzu
Link to post
Share on other sites
  • 0
Em 21/10/2019 em 17:25, ezbueno disse:

if (opcao == 2){
        for (l = 0; l < 4; l++){
            printf ("\n%d", mat[l][l]);
        }
        cout << "\n";
    }

Mudar para:

if (opcao == 2){
        for (l = 0; l < 4; l++){
          	//Imprimindo espaçamento
          	for (s=0; s<l; s++)	printf("  ");	//Neste caso coloquei 2 espaços, mas você pode ajustar para ficar compativel com o espaçamento entre linhas
          	//Imprimindo número
            printf ("%d\n", mat[l][l]);
        }
        cout << "\n";
    }

 

Link to post
Share on other sites
  • 0

Olá! @Hazzu

 

Eu testei da forma que você me mostrou e deu certo, poxa, muito obrigado. Só mais uma pergunta, como eu faria para imprimir os valores da diagonal secundária, desta maneira. Exemplo:

                                                                        1

                                                                1

                                                          1

                                                   1 

Esse é o trecho do meu código que imprime os valores da diagonal secundária.

if (opcao == 3){
        for (l = 0; l < 4; l++){
            for (c = 0; c < 4; c++){
                if (l + c == 3){
                    //printf ("\n%5d", mat[l][c]);
                    cout << "   " << mat[l][c] << "\n";
                }
            }
            //cout << "\n";
        }
    }

Do jeito que está, a impressão ocorre da seguinte maneira. Ex.

  1

  1

  1

  1

Eu tentei me basear no outro exemplo que você me mostrou, mas eu não consegui. Se você puder meu ajudar mais uma vez me mostrando como implementar isso no meu código, serei muito grato.

 

 

Link to post
Share on other sites
  • 0

Atente que o recuo horizontal é função unicamente da coluna, sendo 0 para a primeiro coluna (c=0) e máximo para a última coluna (c=3).
Então:
 

6 horas atrás, ezbueno disse:

if (opcao == 3){
        for (l = 0; l < 4; l++){
            for (c = 0; c < 4; c++){
                if (l + c == 3){
                    //printf ("\n%5d", mat[l][c]);
                    cout << "   " << mat[l][c] << "\n";
                }
            }
            //cout << "\n";
        }
    }

Deverá ser:

if (opcao == 3){
       for (l = 0; l < 4; l++){
		for (c = 0; c < 4; c++){
			if (l + c == 3){
			//imprimindo recuo
			for (s=0; s<c; s++) printf("   ");	//desta vez coloquei 3 espaços
			//imprimindo numero;
			printf("%d\n",mat[l][c]);
			}
		}
	}
}

 

Edited by Hazzu
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Cloud Computing


  • Forum Statistics

    • Total Topics
      148681
    • Total Posts
      644506
×
×
  • Create New...