Lucas Maciel Francisco

Respostas no Fórum

Visualizando 11 posts - 1 até 11 (de 11 do total)
  • Autor
    Posts
  • em resposta a: M02 Exercício 17 #73889

    Gostaria de esclarecer algo sobre o exercício 17..

    eu fiz desta formna:

    se (((ano%4==0 ou ano%400==0) e ano%100!=0) ou (ano%100==0 e ano%400==0)) {
    			escreva(" É BISSEXTO!")
    		} senao {
    			escreva(" NÂO É BISSEXTO!")
    		}

    e usei estes sites para aprender o que era um ano bissexto e compreender o calculo:

    https://escolakids.uol.com.br/matematica/calculo-do-ano-bissexto.htm
    https://pt.wikihow.com/Descobrir-se-um-Ano-%C3%A9-Bissexto

    minha forma ficou bem parecida com a do professor, com excessão de que ficou maior..
    minha pergunta é: desse jeito ficou bom, tendo como base o sistes que me informei? essas linhas a mais são realmente desnecessárias?

    Obrigado Luis, será de grande ajuda para mim também.

    em resposta a: Os acentos se transformaram em alguma língua asiática! #76359

    Isso começou a acontecer a partir de quando? você se lembra de ter feito alguma modificação nas configurações do portugol?
    tem certeza de que não é seu teclado ou o sistema? (quando eu usava windows, as vezes o sistema trocava o idioma do meu teclado, ja que eu instalava 3)
    tentou re-instalar o portugol?
    pesquisou alguém, no yt, ou mesmo no site do portugol, falando sobre esse erro?

    falei tudo o que eu faria se estivesse no seu lugar, desculpe se não consegui ajudar..

    em resposta a: MO04A015 – Sortear sem repetir #76033
    programa
    {
    	
    	inclua biblioteca Util --> ut
    	funcao inicio()
    	{
    		inteiro v[11], s=0, i=0
    		logico repet=falso
    
    		enquanto (i<ut.numero_elementos(v)) {
    			v[i]=sorteia(0,10)
    			para (inteiro i2=0;i2<ut.numero_elementos(v);i2++) {
    				se (v[i]==v[i2] e i!=i2) {
    					repet=verdadeiro
    					pare
    				}
    			}
    			se (repet==verdadeiro) {
    				repet=falso
    			} senao {
    				i++
    			}
    		}
    		
    		para (inteiro i1=0;i1<ut.numero_elementos(v);i1++) {
    			escreva(v[i1], " ")
    		}

    Obrigado pelas suas observações, reajustei com base nelas. Ainda acho a outra forma mais confortavel, mas fazer o que, tenho que se seguir as boas práticas, ja que programadores geralmente trabalham em equipe.

    Opa, acabei de acabar o exercício 068.. deu um trabalho, e estou me questionando se tem erros no meu código ou se tem algo que eu possa melhorar. Ja que ficou um código relativamente grande, eu estou tendo dificildades de pensar em todas as possibilidades possíveis, então se alguém pudesse dar alguma opnião, seria de grande ajuda!
    Aqui está:

    programa
    { // Estudonauta: Programação básica. Módulo 4, Aula 14, Exercício 068. (https://estudonauta.com/)
    	
    	inclua biblioteca Util --> ut
    	funcao inicio()
    	{
    		caracter camp_r[5][5]
    		inteiro lin, col, ctrl=1, pon=0, sor[2]
    		
    		escreva("{ EXERCÍCIO 068 - Jogo Campo Minado }\n\n")
    
    		ut.aguarde(500)
    		escreva("==================================\n\tCAMPO MINADO V1.0\n==================================\n\n")
    
    		// gerando "bombas"
    		ut.aguarde(1000)
    		enquanto (ctrl<=5) {
    			sor[0]=sorteia(0,ut.numero_linhas(camp_r)-1)
    			sor[1]=sorteia(0, ut.numero_colunas(camp_r)-1)
    			se (camp_r[sor[0]][sor[1]]!='O') {
    				ctrl++
    				camp_r[sor[0]][sor[1]]='O'
    			}
    		}
    		ctrl=1
    
    		// gerando o resto com base na posição das "bombas"
    		para (inteiro l=0;l<ut.numero_linhas(camp_r);l++) {
    			para (inteiro c=0;c<ut.numero_colunas(camp_r);c++) {
    				se (camp_r[l][c]!='O') {
    					camp_r[l][c]='-'
    				}
    			}
    		}
    
    		// jogo
    		faca {
    			para (inteiro l=0;l<ut.numero_linhas(camp_r);l++) {
    				para (inteiro c=0;c<ut.numero_colunas(camp_r);c++) {
    					ut.aguarde(25)
    					se (camp_r[l][c]!='V') {
    						escreva("?  ")
    					} senao {
    						escreva(camp_r[l][c], "  ")
    					}
    				}
    				escreva("\n")
    			}
    
    			escreva("------------------------------------\nFaça sua jogada! (Tentativa: ", ctrl,
    			")\n")
    			
    			faca {
    				escreva("LINHA = ")
    				leia(lin)
    			} enquanto (lin>=ut.numero_linhas(camp_r) ou lin<0)
    			faca {
    				escreva("COLUNA = ")
    				leia(col)
    			} enquanto (col>=ut.numero_colunas(camp_r) ou col<0)
    			
    			se (camp_r[lin][col]=='O') {
    				ut.aguarde(500)
    				escreva("------------------------------------\n\n--> TIRO ERRADO! Acertou uma bomba e PERDEU O JOGO!")
    				camp_r[lin][col]='*'
    				pare	
    			} senao se (camp_r[lin][col]=='V') {
    				escreva("\t\t--> Você não pode jogar duas vezes na mesma posição, tente novamente!\n")
    			} senao {
    				ut.aguarde(500)
    				ctrl++
    				pon+=2
    				escreva("------------------------------------\n\n")
    				camp_r[lin][col]='V'
    				se (ctrl==6) {
    					ctrl--
    					escreva("--> VOCÊ GANHOU!")
    					pare
    				} senao {
    					escreva("--> TIRO CERTO! Não acertou nehuma bomba!\n")
    				}
    			}
    		} enquanto (verdadeiro)
    	
    		// resultados
    		escreva("\n\n------------------------------------\nFIM DE JOGO!\n")
    		
    		para (inteiro l=0;l<ut.numero_linhas(camp_r);l++) {
    			para (inteiro c=0;c<ut.numero_colunas(camp_r);c++) {
    				ut.aguarde(25)
    				escreva(camp_r[l][c], "  ")
    			}
    			escreva("\n")
    		}
    
    		escreva("\nVocê fez ", pon, " pontos em ", ctrl, " tentativas.\n------------------------------------")
    	}
    }
    em resposta a: Ex 52 – Pirâmide B #74684

    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!

    em resposta a: Ex 52 – Pirâmide B #74615

    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..

    em resposta a: M03A07 – Maior e Menor Valores #74611

    ooh, Ok, muito obrigado pela a ajuda!

    em resposta a: M03A07 – Maior e Menor Valores #74349

    Modifiquei, e agora está da forma que o professor orientou, tendo em vista que não achei outra maneira mais adequada de fazer:

    programa
    {
    	
    	funcao inicio()
    	{
    		inteiro ctrl=1, v, ma_v=0, me_v=0
    		
    		escreva("Maior e Menor Valor\n\n")
    		
    		enquanto (ctrl<=5) {
    			escreva("Digite o valor: ")
    			leia(v)
    
    			se (ctrl==1) {
    				ma_v=v
    				me_v=v
    			} senao {
    				se (ma_v<v) {
    					ma_v=v
    				}
    				se (me_v>v) {
    					me_v=v
    				}
    			}
    			
    			ctrl++
    		}
    
    		escreva("\nMaior: ", ma_v, "\nMenor: ", me_v)
    	}
    }

    Obrigado pelas opiniões, entendi que essa minha solução anterior pode até ser uma solução bacana para outros, mas de fato, não é adequada para o objetivo deste programa.

    Eu queria evitar ao máximo ter que usar de coisas como inteiro ma_v=10000000 ou algo do tipo, justamente por não sentir segurança em usar, mas acho que existem excessões, por exemplo, este é o meu código do Exercício 037:

    programa
    { // Estudonauta: Programação básica. Módulo 3, Aula 7, Exercício 037. (https://estudonauta.com/)
    	
    	funcao inicio()
    	{
    		inteiro ctrl=1, id, ma_id=0, me_id=0
    		cadeia nom, ma_ve="mais velho", ma_jo="mais jovem"
    		
    		escreva("{ EXERCÍCIO 037 - Mais velho e Mais novo }\n")
    		
    		enquanto (ctrl<=5) {
    			escreva("\n-------------------\n", ctrl, "a PESSOA\n-------------------\nNOME: ")
    			leia(nom)
    			escreva("IDADE: ")
    			leia(id)
    
    			se (ma_id<id) {
    				ma_id=id
    				ma_ve=nom
    			}
    			se (me_id>id ou me_id==0) {
    				me_id=id
    				ma_jo=nom
    			}
    
    			ctrl++
    		}
    
    		escreva("\nA pessoa mais jovem é ", ma_jo, " que tem ", me_id, " anos.\nA Pessoa mais velha é ", ma_ve, " que tem ", ma_id, " anos.")
    	}
    }

    como podem ver, eu usei a idade para orientar todo o código, e usei a minha mesma solução anterior, e para esse caso, eu não acho errado, pois ninguém iria digitar que tem 0 anos, pois não condiz com o objetivo do código. (e mesmo se fizerem essa maldade kkkk, pode-se alterar para orientar o calculo em -1 ao em vez de 0, que ai não dá né, -1 anos de vida é sacanagem kkkk)

    é certo pensar dessa forma? posso entender que essa solução torna-se adequada para este código 037, por pegar como base o fato de que ninguém tem 0 (ou -1) anos de vida?

    em resposta a: M03A07 – Maior e Menor Valores #74216

    aaah, analisei mais um pouco e acabei de encontrar um erro.
    caso o usuário digite 0 e coloque ele em qualquer lugar que não seja o no valor final, vai dar erro, então troquei o “v2=0” e o “v2==0” por “v2=-1” e “v2==-1” e parece funcionar tranquilamente agora, mas apenas para números positivos (ou neutro).. mas ver esse erro ja me deu uma boa noção dos meus limites e dos limites do meu programa, desculpe o incômodo..

    em resposta a: erro em uma questão da prova do módulo 03 do curso de linux. #71610
Visualizando 11 posts - 1 até 11 (de 11 do total)