Jump to content

Dúvida sobre código - Matrizes


Ir para a Solução Solucionado por ThiagoAlves,

Postagens Recomendadas

Olá pessoal, tudo bem ?

Me chamo Bruno e estou aprendendo lógica de programação.

Estou tendo dificuldade de entender um exercício que tem como objetivo mostrar o triangulo superior de uma matriz. Irei colocar o código todo para entender o contexto da minha dúvida.

 

Minha dúvida esta no Procedimento TrianguloSuperior( ). Eu expliquei melhor abaixo qual a parte que eu não estou entendo.

var
  m: vetor[1..4, 1..4] de Inteiro
  l, c, op: Inteiro
  
Procedimento MostraMatriz() // Aqui eu entendi que este procedimento irá mostrar o código completo.
inicio
   Para l <- 1 ate 4 faca
      Para c <- 1 ate 4 faca
         Escreva(m[l,c]:4)
      FimPara
      EscrevaL()
   FimPara
FimProcedimento

Procedimento DiagonalPrincipal() Aqui eu entendi que irá mostrar apenas a diagonal.
var t: inteiro
inicio
   Para l <- 1 ate 4 faca
      EscrevaL(m[l,l]:4)
      Para t <- 1 ate l faca
         Escreva("    ")
      FimPara
   FimPara
FimProcedimento

Procedimento TrianguloSuperior() // O problema no meu entendimento esta aqui.
var t: Inteiro
inicio
   Para l <- 1 ate 3 faca     // Acredito que aqui começa com l valendo 1 até 3 porque o triagulo superior em matriz 4x4 vai até a linha 3.  
      Escreva("    ")
      Para c <- l+1 ate 4 faca // Aqui eu entendi que esta parte vai mostrar em qual linha o código esta e sua respectiva coluna.
         Escreva(m[l,c]:4)
      FimPara
      EscrevaL()
      Para t <- 1 ate l faca // O PROBLEMA ESTA AQUI - EU NÃO ENTENDI PARA QUE SERVE ESTE t <- 1 ATE l ???
         Escreva("    ")
      FimPara
   FimPara
   EscrevaL()
FimProcedimento

Procedimento TrianguloInferior()
inicio
   Para l <- 2 ate 4 faca
      EscrevaL()
      Para c <- 1 ate l-1 faca
         Escreva(m[l,c]:4)
      FimPara
   FimPara
   EscrevaL()
FimProcedimento

// Daqui para baixo tudo OK.

inicio
   Para l <- 1 ate 4 faca
      Para c <- 1 ate 4 faca
          Escreva("Digite valor para a posicao [", l, ",", c, "]: ")
          Leia(m[l,c])
      FimPara
   FimPara
   LimpaTela
   Repita
      EscrevaL()
      EscrevaL("MENU DE OPCOES")
      EscrevaL("====================")
      EscrevaL("[1] Mostrar a Matriz")
      EscrevaL("[2] Diagonal Principal")
      EscrevaL("[3] Triangulo Superior")
      EscrevaL("[4] Triangulo Inferior")
      EscrevaL("[5] Sair")
      Repita
         EscrevaL("===== OPCAO: ")
         Leia(op)
      Ate (op >=1) e (op <=5)
      LimpaTela
      Escolha op
         Caso 1
            MostraMatriz()
         Caso 2
            DiagonalPrincipal()
         Caso 3
            TrianguloSuperior()
         Caso 4
            TrianguloInferior()
         Caso 5
            EscrevaL("ENCERRANDO...")
      FimEscolha
   Ate (op = 5)

 

Link to comment
Compartilhe em outros sites

  • 4 months later...
  • Solução

Boa tarde Bruno, espero que esteja tudo bem.
Parece que você está com dúvida sobre o propósito do loop Para t <- 1 ate l faca no procedimento TrianguloSuperior( ). Vamos esclarecer isso..

o loop Para t <- 1 ate l faca é utilizado para inserir espaços em branco antes de escrever os elementos da matriz no TrianguloSuperior( ). Isso é feito para garantir a formatação correta da saída na tela, para que os elementos do triângulo superior estejam alinhados corretamente da esquerda para direita.

Vamos explicar em detalhes:

O loop Para l <- 1 ate 3 faca itera pelas linhas do triângulo superior (já que você tem uma matriz 4x4 e o triângulo superior vai até a linha 3).

Dentro deste loop, antes de escrever os elementos da matriz que fazem parte do triângulo superior, é necessário adicionar uma quantidade de espaços em branco. Essa quantidade é determinada pelo valor de l, que representa a linha atual. Quanto maior o valor de l, mais à direita na matriz estamos e, portanto, mais espaços em branco são necessários para manter a formatação.

Então, o loop Para t <- 1 ate l faca adiciona esses espaços em branco antes de escrever os elementos da matriz. Ele itera de 1 até o valor atual de l.

 

Por exemplo, suponha que estamos na segunda linha do triângulo superior. Nesse caso, l seria igual a 2. O loop Para t <- 1 ate l faca irá iterar de 1 a 2, adicionando dois espaços em branco antes de escrever o elemento da matriz. Isso garante que os elementos da segunda linha do triângulo superior sejam alinhados corretamente com relação aos elementos da primeira linha.

Uma forma pratica seria comentando o loop Para t <- 1 ate l faca fazendo isso vai perceber que ele não criar os espaços em branco em cada iteração, pegando assim a primeira posição, com isso as posições do retono do método TrianguloSuperior( ), vai retornar na posição contrária, pois vai pgar a promeira posição ao invés a posição do valor em l.
Espero que tenha conseguido sanar sua duvida. Qualquer coisa estamos aqui para ajudar.
Abraços.

  • Curtir 1
Link to comment
Compartilhe em outros sites

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora


×
×
  • Create New...