Módulo 03 – Exercício 52 – Triângulo Invertido

Home Fóruns Programação Básica Módulo 03 – Exercício 52 – Triângulo Invertido

Visualizando 3 respostas da discussão
  • Autor
    Posts
    • #154715

      Eu não consegui fazer o exercício, então tive que ver a resolução do professor, porém eu não consegui entender a segunda estrutura de repetição.

      Segue o código da solução do professor.

      programa
      {
      	
      	funcao inicio()
      	{
      		inteiro nAndar, c1, c2, c3, quantEst = 0, quantEsp = 0
      
      		escreva("Quantos andares o triângulo vai ter? ")
      		leia(nAndar)
      
      		quantEst = (nAndar *2) -1 // A quantidade se estrela na parte de cima da pirâmide é o dobre de andares menos 1
      
      		para (c1 = 1; c1 <=nAndar; c1++){
      			para(c2 = 1; c2 <=  quantEsp; c2++ ){
      				escreva(" ")
      			}
      			quantEsp++
      			para(c3 = 1; c3 <= quantEst  ; c3++){
      				escreva("*")				
      			}
      			quantEst -= 2
      			escreva("\n")
      		}
      		
      	}
      }

      Minha dúvida é referente ao loop para (c2 = 1; c2 <= quantEsp; c2++), ele inicia c2 = 1 e quantEsp = 0, tornando a condição lógica falsa (1 <= 0), depois tanto o c2 quanto a quantEsp são incrementados e a condição lógica continua falsa (2 <= 1). Não entendi como o sistema coloca espaços após a segunda iteração, já que pelo que eu entendi a condição lógica nunca será atendida.

      • Este tópico foi modificado 1 mês, 3 semanas atrás por Raphael Granato Antunes. Motivo: Arrumar uma informação digitada errada
    • #154800
      Tutora Jessica
      Moderador

      Olá Raphael ,

      Loop Principal (Montando o Triângulo):

      para (c1 = 1; c1 <= nAndar; c1++): Este loop externo percorre cada linha do triângulo, de 1 até o número de andares (nAndar).

      Loop para Espaços:

      para(c2 = 1; c2 <= quantEsp; c2++ ): Este loop interno imprime espaços em branco antes dos asteriscos em cada linha.
      quantEsp++: Incrementa a quantidade de espaços a cada linha, movendo os asteriscos para o centro.

      Loop para Asteriscos:

      para(c3 = 1; c3 <= quantEst; c3++): Este loop interno imprime os asteriscos em cada linha.

      Ajustes e Quebra de Linha:

      quantEst -= 2: Decrementa a quantidade de asteriscos em 2 a cada linha, para que o triângulo vá diminuindo.
      escreva(“\n”): Pula para a próxima linha após imprimir os espaços e asteriscos da linha atual.

      Consegui que entendesse melhor explicando cada passo a passo? Caso ainda fique com dúvidas retorne ao fórum que vamos tentar lhe ajudar novamente a sanar suas dúvidas.

    • #155602

      Boa tarde! Estou com dúvida nesse exercício.
      Gostaria de saber por que o contador de espaços começa com 1 porque no primeiro andar não há espaço, logo, não deveria já ser 0?
      Queria saber também por que “escreva(“\n”)” não pode ser usado no asterisco.`

      funcao inicio()
      { inteiro qand
      escreva(“Quandos andares o triângulo vai ter? “)
      leia(qand)
      inteiro cand
      inteiro cesp
      inteiro qesp = 0
      inteiro cest
      inteiro qest = (2 * qand) – 1
      para (cand = 1; cand <= qand; cand ++) {
      para (cesp = 1; cesp <= qesp; cesp ++) {
      escreva(” “)
      }
      qesp = qesp + 1
      para (cest = 1; cest <= qest; cest ++) {
      escreva(“*”)
      }
      escreva(“\n”)
      qest = qest – 2
      }

      }
      }

    • #155655
      Tutora Jessica
      Moderador

      Olá Isabela, trouxe a sua dúvida para uma ja existente no fórum do mesmo exercício, nel você encontra explicações que pode ajudar na sua dúvida, mas vou deixar aqui uma explicação também..

      Lembrando que seu código ainda não esta formando a devida pirâmide..

      – Por que o contador de espaços começa com 1?

      O contador começa com 1 pois é necessário imprimir espaços antes dos asteristicos, se começasse com 0 o programa não iria imprimir espaços suficientes para deixar o triângulo como ele deve ficar. Além disso o valor do seu contador é incrementado a cada iteração do loop externo, que significa que o número de espaços a serem impressos aumenta a cada linha.

      – Por que não pode usar o /n dentro do escreva com asterisco?

      Esse comando serve para pular linha, e ele esta vindo após o escreva com * dentro do loop, então como o programa ler linha a linha ele vai pular uma linha após a quantidade correta de asteriscos .
      Se você usasse escreva(“\n”) dentro do loop que imprime os asteriscos, o programa pularia uma linha após cada asterisco.

      Quando terminar seu código, compartilhe conosco para ajudar outros alunos 🖖🏼

Visualizando 3 respostas da discussão
  • Você deve fazer login para responder a este tópico.