Home › Fóruns › Programação Básica › Ex 52 – Pirâmide B
- Este tópico contém 12 respostas, 8 vozes e foi atualizado pela última vez 1 ano, 10 meses atrás por Tutora Jessica.
-
AutorPosts
-
-
14 de agosto de 2021 às 23:08 #73672Michel SouzaParticipante
Olá pessoal! No desafio 052 Mod_03 o Prof. Guanabara, pediu pra desenhar na tela uma pirâmide invertida, de cabeça pra baixo, formando tipo um V.
Depois pediu como desfio extra desenhar uma pirâmide normal. Aqui está o código que eu fiz, quem quiser da uma olhada e melhorar alguma coisa fiquem a vontade.programa { /* Extra 52b: Pirâmide 2 - * Faça um programa que pergunte o número de camadas (andares) de uma pirâmide e com base nesse valor, * desenhar uma pirâmide na tela. */ inclua biblioteca Util --> u funcao inicio() { // Declaração de variáveis ----- inteiro camada, quantEst = 0, quantEsp, contCam, contEst, contEsp // Entrada de Dados ----- escreva("Quantas camadas a pirâmide vai ter ? ") leia(camada) // Analise dos Dados ----- quantEsp = (camada) // A quantidade de espaços em branco será proporcional ao número de camadas. escreva("\n ===== Desenhando a Pirãmide ====\n\n") // Estrutura de repetição - Construindo a pirâmide. para (contCam = 1; contCam <= camada; contCam ++) { // Primeiro (para) vai "contar" as camadas. para (contEsp = 1; contEsp <= quantEsp; contEsp++) { // Segundo (para) vai "contar" os espaços em branco. escreva(" ") // Mostra os espaços em branco. Coloca um traço (-) entre as aspas que visualiza melhor. } quantEsp -- // A cada iteração vai reduzir um espaço. Se colocar ++ vai desenhar uma pequena escada. para (contEst = 0; contEst <= quantEst; contEst ++) { // Terceiro (para) vai contar as estrelas *. escreva("*") // Mostra as estrelas } quantEst += 2 // A cada repetição da camada (andares) vai acrescentar 2 estrelas a mais. escreva("\n") // pula uma linha u.aguarde(500) // Aguardar 1/2 segundo entre uma camada e outra. } escreva("\n===== PRONTO TERMINEI DE DESENHAR A PIRÂMIDE =====\n\n") } }
Valeu, bons estudos a todos!
-
17 de agosto de 2021 às 18:45 #73844Tutora MaylaMestre
Michel, parabéns por ter conseguido resolver o desafio! Continue se dedicando e será cada vez um programador melhor!
Se houver quaisquer dúvidas basta entrar em contato que lhe ajudaremos. -
1 de setembro de 2021 às 19:08 #74615Lucas Maciel FranciscoParticipante
Yo..
Eu assisti a aula 14 e consegui fazer todos os exercícios, mas com um pouco (ta, talvez mais que apenas “um pouco”) de dificuldade, então por isso vim procurar por soluções de outras pessoas e comparar com as minhas, para tentar amadurecer toda a ideia de aninhamentos.. minha lógica.. e encontrei este post primeiro, onde falava de uma tal pirâmide B. eu ja ia postar meu código para pedir opniões, então com base nesse post, resolvi tentar fazer essa pirâmide B também, e ja mostrar o dois. e eu consegui.. (eu acho?)programa { // Estudonauta: Programação básica. Módulo 3, Aula 14, Exercício 052. (https://estudonauta.com/) inclua biblioteca Util --> ut funcao inicio() { inteiro an, ctrl, ctrl2, anctrl=0, anctrl2=0 escreva("{ EXERCÍCIO 052 - Pirâmide }\nQuantos andares? ") leia(an) escreva("\n") para (ctrl=1;ctrl<=an;ctrl++) { se (ctrl==1) { anctrl=an*2 } senao { anctrl-=2 } anctrl2++ para (ctrl2=anctrl2;ctrl2>0;ctrl2--) { escreva(" ") } para (ctrl2=anctrl;ctrl2>0;ctrl2--) { ut.aguarde(50) escreva("*") } escreva("\n") } escreva("\n") anctrl=0 anctrl2=0 para (ctrl=1;ctrl<=an;ctrl++) { se (ctrl==1) { anctrl2=an } senao { anctrl2-=1 } anctrl+=2 para (ctrl2=1;ctrl2<=anctrl2;ctrl2++) { escreva(" ") } para (ctrl2=1;ctrl2<=anctrl;ctrl2++) { ut.aguarde(50) escreva("*") } escreva("\n") } } }
esse é de longe, o código mais confuso que ja fiz até agora. eu gastei um bom tempo nele, evoluindo a partir de pequenos avanços, e depois de pronto, quando deu aquela felicidade de ver o resultado que eu almejava, eu parei para analisar do começo ao fim tudo o que fiz e eu me confudi varias vezes kkkkkkkk
então, não sei se essa confusão é porque eu ainda não dei tempo ao tempo para me acostumar com toda a ideia, ou se o problema é realmente o meu código.. -
2 de setembro de 2021 às 15:32 #74655Michel SouzaParticipante
Lucas, esse post que eu chamei de pirâmide B é um desafio extra que o professor Guanabara sugeriu, não é obrigatório é mais para aprendizado mesmo.
Pelo que eu vi aqui o seu código funcionou normalmente. A lógica é a mesma do primeiro a pirâmide A, o que muda é que nesse se inicia pelas estrelinhas (*) depois vai diminuindo o número delas e acrescentando os espaços em branco. Nessa segunda pirâmide B se começa pelos espaços e vai a cada repetição acrescentando as estrelas (*) e diminuindo os espaços. Talvez vc possa ter ficado confuso por ter colocado os dois exemplos em um único código usando as mesmas variáveis. Tenta fazer separadamente usando nomes de variável mais condizentes creio que terá uma visão melhor.
Se eu puder passar mais um desafio, tenta fazer um losango aparecer na tela. -
3 de setembro de 2021 às 04:28 #74684Lucas Maciel FranciscoParticipante
Michel, consegui fazer o seu desafio:
programa { // Estudonauta: Programação básica. Módulo 3, Extra. inclua biblioteca Util --> ut funcao inicio() { inteiro ctrl, ctrl2, an, an_ctrl=0, esp_ctrl=0 // ctrl=variavel de controle externa // ctrl2=variavel de controle interna // an=variavel do número de andares // an_ctrl=variavel de manipulação dos asterísticos baseada na an // esp_ctrl= variavel de manipulação dos espaços em relação ao an_ctrl escreva("{ EXTRA - Losango }\nQuantos andares? ") leia(an) escreva("\n") para (ctrl=1;ctrl<=an;ctrl++) { se (ctrl==1) { esp_ctrl=an } senao { esp_ctrl-=1 } para (ctrl2=1;ctrl2<=esp_ctrl;ctrl2++) { escreva(" ") } an_ctrl+=2 para(ctrl2=1;ctrl2<=an_ctrl;ctrl2++) { ut.aguarde(20) escreva("*") } escreva("\n") } para (ctrl=1;ctrl<=an;ctrl++) { esp_ctrl++ para (ctrl2=1;ctrl2<=esp_ctrl;ctrl2++) { escreva(" ") } an_ctrl-=2 para (ctrl2=1;ctrl2<=an_ctrl;ctrl2++) { ut.aguarde(20) escreva("*") } escreva("\n") } } }
Eu consegui visualizar o meu código muito melhor agora no seu desafio, e é realmente interessante a ideia de fazer um losango, deu pra reforçar legal o conceito de aninhamento na minha mente. Consigo visualizar todo o código bem melhor. Obrigado pela ajuda cara!
-
8 de setembro de 2021 às 19:55 #74966Tutora MaylaMestre
Michel, parabéns pela explicação e por ajudar o aluno Lucas!
Lucas, parabéns por ter concluído o desafio!
Continuem se dedicando assim e serão cada vez programadores melhores!
Quaisquer dúvidas basta entrar em contato que lhes ajudaremos. -
27 de março de 2022 às 10:42 #89558Arthur Martins AlvesParticipante
Olá pessoal! No desafio 052 Mod_03 o Prof. Guanabara, além do desefio extra de desenhar uma pirâmide normal, pele também desafiou a desenhar uma piramide de lado. Aqui está o código que eu fiz, mas foi um código bem confuso e não sei se é a melhor forma de fazer.
programa { funcao inicio() { inteiro and escreva("Quantos andares a pirâmide vai ter? ") leia(and) inteiro quantEsp = (and * 2) - 1 inteiro quantEst = 1 para(inteiro cAnd = 1; cAnd <= and; cAnd++) { para (inteiro cEst = 1; cEst <= quantEst; cEst++) { escreva("*") } quantEst++ para (inteiro cEsp = 1; cEsp <= quantEsp; cEsp++) { escreva(" ") } quantEsp -= 2 escreva("\n") } inteiro quantEst2 = and - 1 inteiro quantEsp2 = 1 para(inteiro cAnd2 = 1; cAnd2 <= and; cAnd2++) { para(inteiro cEst2 = 1; cEst2 <= quantEst2; cEst2++) { escreva("*") } quantEst2-- para(inteiro cEsp2 = 1; cEsp2 <= quantEsp2; cEsp2++) { escreva(" ") } quantEsp2 += 2 escreva("\n") } } }
-
1 de abril de 2022 às 14:32 #89989IcaroFilhoModerador
Boa tarde Arthur.
Existe diversas formas de se realizar esse desafio, pois tudo é relativo a perspectiva que se enxerga o problema.
O importante é o código ter ficado limpo e resolvido o problema.
Por exemplo, eu enxerguei uma P.A na base do triangulo, tendo base inicial igual a 3 e sempre que se sobe 1 andar, adiciona + 2 a base.
Tendo isso como primícia, basta fazer o laço para “subir” até o centro do triangulo e depois “descer”Segue meu código:
programa { funcao inicio() { inteiro base = 3 inteiro andar, base_num escreva("Quantos andares a pirâmide vai ter? ") leia(andar) base_num = base + ((andar-1) * 2 ) para(inteiro b = 0; b < base_num; b++){ se(b > (base_num /2)){ para(inteiro altura = base_num -1 ; altura > b; altura--){ escreva("*") } } senao { para(inteiro altura = 0 ; altura < b; altura++){ escreva("*") } } escreva("*\n") } } }
PS: Nó meu código estou cogitando que a base não conta como altura, assim como um prédio que conta o primeiro andar o segundo pavimento.
- Esta resposta foi modificada 2 anos, 7 meses atrás por IcaroFilho.
-
5 de janeiro de 2023 às 17:51 #108283Marlei GSParticipante
Olá pessoal!!!!
Ref.: M03A14-Ex052Segue a execução do meu código.
programa { inclua biblioteca Util --> u funcao inicio() { escreva("M03A14: Laços Aninhados\n") escreva("Ex 052: Pirâmide\n\n") inteiro n, c, x, y escreva("Quantos andares? ") leia(n) para(c = n; c > 0; c--) { para(y = c+1; y <= n; y++) { escreva("A") } para(x = 1; x <= c*2; x++) { u.aguarde(300) escreva("*") } escreva("\n") } escreva("\n=*=*=*=*=*=> PROGRAMA ENCERRADO <=*=*=*=*=*=\n") } }
Abraços,
MarleiGS
-
6 de janeiro de 2023 às 11:16 #108311Tutora JessicaModerador
Ola Marlei, alguma dúvida?
-
10 de janeiro de 2023 às 15:09 #108512Carol ProtásioParticipante
Olá!! Cheguei nesse code para a pirâmide “normal” que o prof Guanabara solicitou:
inclua biblioteca Util –> u
inteiro and, cEst, cEsp, cAnd, tot
escreva(“Quantos andares seu triangulo vai ter? “)
leia(and)inteiro qtEst = 1
inteiro qtEsp = and – 1para(cAnd = 1; cAnd <= and; cAnd++){
para(cEsp = 1; cEsp <= qtEsp; cEsp++){
escreva(” “)
}
qtEsp–
para(cEst = 1; cEst <= qtEst; cEst++){
escreva(“*”)
u.aguarde(100)
}
qtEst+=2
escreva(“\n”)
} -
10 de janeiro de 2023 às 15:36 #108513Tutora JessicaModerador
Ola Carol, tem alguma duvida?
-
-
AutorPosts
- Você deve fazer login para responder a este tópico.