Home › Fóruns › Programação Básica › M03A11 – Exercícios 045
- Este tópico contém 21 respostas, 11 vozes e foi atualizado pela última vez 5 meses, 1 semana atrás por Tutora Jessica.
-
AutorPosts
-
-
21 de abril de 2021 às 20:15 #65748Antonio Carlos Belemel da CruzParticipante
Boa noite pessoal
alguém que está mais avançado poderia revisar o código abaixo, estou com dúvida se atingi o objetivo proposto no exercício 045 do M03A11. Desde já agradeço!programa { inclua biblioteca Util --> u funcao inicio() { //cabeçalho do jogo escreva("{ EXERCÍCIO 045 - Jogo de adivinhar }\n") escreva("Vou pensar em um número entre 1 e 10") escreva("\nVocê tem 3 CHANCES para acertar") escreva("\n-------------------------------------\n") //campo variaveis inteiro c=1, resp, num, primValor=0 faca{ num=sorteia(1,10) se(c == 1){ primValor=num } escreva("\nChance de número ", c, "/3. Em que número eu pensei? ") leia(resp) se(primValor > resp){ escreva("Ainda não foi dessa vez... Mas vou te dar outra chance. Chute um valor MAIOR") } se(primValor < resp){ escreva("Ainda não foi dessa vez... Mas vou te dar outra chance. Chute um valor MENOR") } se(resp == primValor){ escreva("ACERTOU em ", c, " tentativas") pare } c++ }enquanto(c <= 3) } }
-
26 de abril de 2021 às 10:27 #65946Tutora MaylaMestre
Antonio, o seu código está certo, porém com um pequeno ajuste ele ficará melhor ainda.
Em vez de colocarnum=sorteia(1,10)
dentro do laço e verificar se é a primeira iteração, coloque-o antes dofaca
, assim não há a necessidade da variávelprimValor
podendo então ser utilizada apenas a variávelnum
.Tente fazer este ajuste, caso consiga seu código estará certíssimo! Parabéns pela resolução, continue se dedicando e será cada vez um programador melhor!
Espero ter ajudado, quaisquer outras dúvidas estamos a disposição. -
26 de abril de 2021 às 15:46 #65969Antonio Carlos Belemel da CruzParticipante
OLá Mayla, Obrigado pelo feedback!
Corrigi o código. Vou postar abaixo caso alguém tenha alguma dúvida e possa revisar.programa { inclua biblioteca Util --> u funcao inicio() { //cabeçalho do jogo escreva("{ EXERCÍCIO 045 - Jogo de adivinhar }\n") escreva("Vou pensar em um número entre 1 e 10") escreva("\nVocê tem 3 CHANCES para acertar") escreva("\n-------------------------------------\n") //campo variaveis inteiro c=1, resp, num=sorteia(1,10) faca{ se(c == 1){ num=num } escreva("\nChance de número ", c, "/3. Em que número eu pensei? ") leia(resp) se(num > resp){ escreva("Ainda não foi dessa vez... Mas vou te dar outra chance. Chute um valor MAIOR") } se(num < resp){ escreva("Ainda não foi dessa vez... Mas vou te dar outra chance. Chute um valor MENOR") } se(resp == num){ escreva("ACERTOU em ", c, " tentativas") pare } c++ }enquanto(c <= 3) } }
-
27 de abril de 2021 às 19:06 #66025Tutora MaylaMestre
Antonio, não é necessário colocar
se(c == 1){ num=num }
pois estaria sendo atribuída a variável
num
a ela mesma sem nenhuma alteração. Como a atribuição anum
já está sendo feita fora do laço, não é necessário atribuir nada a ela dentro do laço.
Basta tirar esse blocose
que seu código estará perfeito. Parabéns!!Espero ter ajudado, quaisquer outras dúvidas estamos a disposição.
-
-
6 de maio de 2021 às 14:42 #66420Antonio Carlos Belemel da CruzParticipante
Olá Mayla.
Corrigi e testei, viajei kkk, obrigado!! -
18 de junho de 2021 às 02:00 #69659Antonio Cesar Ferreira NevesParticipante
Obs:Resolvi esse exercício a alguns dias atrás e não sei se era para abrir um outro post ou colocar aqui.minha resposta está funcionando.
Resolução do exercício 45: fiz quase a mesma coisa que o professor ,porém coloquei uma saída para caso o usuário digite um valor maior que dez,se tiverem alguma dica para tirar esse tanto de operador de conjunção para deixar o código mais otimizado to aceitando.
peço desculpas por qualquer erro de português nesse comentário to com sono./* .Estudonauta .Programação Básica .Modúlo 003 Exercício 045 - Jogo de Adivinhar .Objetivo: O Programa deve sortear um número para o úsuario que tera três tentativas para acertar indicando se o número de entrada é maior, igual ou menor o valor apresentado caso o cliente não acerte nas tres tentativas o programa deve apresentar uma mensagem .Autor da Resolução: Antonio Cesar */ //Biblíotecas inclua biblioteca Util funcao inicio() { //Declaração de variáveis inteiro sorteado = 0, numero, chances = 1 //Cabeçalho do Exercicío escreva("===============================================\n\tEXERCÍCIO 045 - Jogo de Adivinhar" + "\n===============================================\n") //Sorteando um número sorteado = Util.sorteia(1,10) //Instruções escreva("Vou pensar em um número entre 1 e dez.\nVocê tem três chances de adivinhar." ) escreva("\n---------------------------------------------------------------------------\n" ) faca { //Entrada de dados escreva(chances, "ª chance de 3. Em que número eu pensei ? ") leia(numero) //Dica caso número seja maior se(numero > sorteado e chances != 3 e numero <= 10) { escreva("Você não acertou e ainda tem ", 3 - chances, " Chute(s).\n" + "Tente um valor menor.\n\n") } senao { //Acertou se(numero == sorteado) { escreva("Parabéns você acertou em", chances, " chance(s).") pare } //Dica caso número seja menor senao se(chances != 3 e numero >= 0) { escreva("Você não acertou e ainda tem ", 3 - chances, " Chute(s).\n" + "Tente um valor maior. \n\n") } } //Instrução se(numero > 10 ou numero < 0) escreva("Você desperdiçou sua chance o número sorteado está entre 1 e 10.\n\n") //Tempo de espera em milisegundo Util.aguarde(1000) //Diminuindo as chances chances ++ }enquanto(chances <= 3) //Mensagem Inspiradora se(numero != sorteado) escreva("Mais sorte na proxima vez\n") //Termino escreva("\n================= Fim do Programa =================") } }
-
21 de junho de 2021 às 17:43 #69850Tutora MaylaMestre
Antonio, parabéns por ter conseguido realizar o exercício e por incrementá-lo!
Quanto a quantidade de operações lógicas, em alguns casos realmente haverão muitas em um único blocose
, vai depender muito da situação. Nesse caso uma forma de melhorar o seu código seria fazendo blocosse
aninhados, não necessariamente pela quantidade de condições lógicas, mas apenas pois há uma forma de organizar o código que facilitaria mais a sua leitura e entendimento.
Tente reescrever essa parte do código abaixo de forma que consiga ser aproveitado de melhor forma a possibilidade do uso do blocosenao
. E realize sempre o teste de mesa com valores distintos para ver se o programa está realmente fazendo o caminho desejado.se(numero > sorteado e chances != 3 e numero <= 10) { escreva("Você não acertou e ainda tem ", 3 - chances, " Chute(s).\n" + "Tente um valor menor.\n\n") } senao { //Acertou se(numero == sorteado) { escreva("Parabéns você acertou em", chances, " chance(s).") pare } //Dica caso número seja menor senao se(chances != 3 e numero >= 0) { escreva("Você não acertou e ainda tem ", 3 - chances, " Chute(s).\n" + "Tente um valor maior. \n\n") } } //Instrução se(numero > 10 ou numero < 0) escreva("Você desperdiçou sua chance o número sorteado está entre 1 e 10.\n\n")
Um exemplo de como melhor organizar aqui é que se houvesse um bloco
se
apenas com o testese(numero <= 10 e numero >= 1)
poderia ser feito para ele umsenao
correspondente ao seguinte teste que está sendo feito atualmente de forma isoladase(numero > 10 ou numero < 0)
.
Ressalto que o seu código está certo e está bom, minha dica é uma forma de continuar evoluindo e melhorar a organização do seu código.
Espero ter ajudado, quaisquer dúvidas estamos a disposição. -
22 de junho de 2021 às 01:44 #69881Antonio Cesar Ferreira NevesParticipante
Muito obrigado!!!
-
-
3 de outubro de 2021 às 21:18 #76782João VictorParticipante
Minha solução do exercício ficou um pouco diferente que a solução do professor, pode ser feito desta forma?
programa { inclua biblioteca Util --> u funcao inicio() { inteiro num, contador = 1, sort escreva("Vou pensar em um número entre 1 e 10 ") escreva("\nVocê tem 3 CHANCES para tentar advinhar ") escreva("\n-----------------------------------------") faca { sort = u.sorteia(1,10) escreva("\nChance de no." + contador + "/3. Em que número eu pensei? ") leia(num) se (contador == 3) { pare } se (num == sort) { escreva("\nACERTOU em 1 tentativa!") } senao se (num < sort) { escreva("\nAinda não foi dessa vez... Mas vou te dar outra chance. Chute um valor MAIOR") } senao se (num > sort) { escreva("\nAinda não foi dessa vez... Mas vou te dar outra chance. Chute um valor MENOR") } contador++ }enquanto (contador < 4) escreva("\nAinda não foi dessa vez... Suas chances acabaram! ") } }
-
5 de outubro de 2021 às 21:01 #76945Tutora MaylaMestre
João, mesclei o seu tópico com um já existente sobre o assunto, antes de criar um tópico sempre procure se já existe um tópico sobre o assunto.
Vamos fazer um passo a passo sobre o seu código:- Ao fazer
sort = u.sorteia(1,10)
está sendo sorteado um novo número a cada iteração do laço, sendo que o objetivo do exercício é que seja gerado um número uma única vez ao início do programa. Tente levar esta linha para fora do laço para resolver este problema. - Após a leitura do chute do usuário, é feita uma verificação se o
contador == 3
. Esta verificação faz com que o programa saia do laço na terceira tentativa, porém antes de realizar o teste se o chute do usuário está correto. Pense em uma maneira de modificar o código de forma a garantir que todos os 3 chutes do usuário sejam verificados antes de sair do laço. - Quando o usuário acerta o chute, é feito um
escreva("\nACERTOU em 1 tentativa!")
, mas seguindo a ideia do exercício de ser gerado apenas um número no início do programa e o usuário ter 3 tentativas para adivinhar o número, este escreva deveria apresentar ao usuário o valor decontador
, e não apenas o valor1
Reforço que seu código está bom, tente apenas acertar estes pontos que mencionei acima e veja se está de acordo com a proposta do exercício. Tente usar o painel de inspecionar do Portugol Studio para auxiliar nos testes do seu código.
Espero ter ajudado, quaisquer dúvidas basta entrar em contato
- Ao fazer
-
15 de novembro de 2021 às 09:43 #80615Arthur Martins AlvesParticipante
Olá! Meu código também saiu bem diferente do professor Guanabara, mas acredito que esteja correto:
programa { funcao inicio() { inteiro c = 1, n, sorteado, maior, menor escreva("{ EXERCÍCIO 045 - Jogo de Adivinhar }") escreva("\nVou pensar em um número entre 1 e 10") escreva("\nVocê tem 3 CHANCES para tentar adivinhar") escreva("\n-----------------------------------------\n") sorteado = 5//sorteia(1,10) faca { escreva("Chance de no. ", c, "/3. Em que número eu pensei? ") leia(n) se (c == 1) { maior = n menor = n } se (n == sorteado) { escreva("ACERTOU em ", c, " tentativas!") pare } senao { c++ escreva("Ainda nao foi dessa vez... ") se (n < sorteado e c <= 2) { escreva("Mas vou te dar outra chance. Chute um valor MAIOR\n") } se (n > sorteado e c <= 2 ) { escreva("Mas vou te dar outra chance. Chute um valor MENOR\n") } se (n != sorteado e c==3) { escreva("Suas chances acabaram!\n") } } } enquanto (c < 4) escreva("\n\n") } }
-
16 de novembro de 2021 às 19:55 #80690Tutora MaylaMestre
Arthur, parabéns! Seu código está correto pois tem a saída desejada, só fique atento as variáveis
maior
emenor
pois elas não estão sendo utilizadas após a sua atribuição.Quaisquer outras dúvidas estamos a disposição. Bons estudos!
-
-
29 de janeiro de 2022 às 18:17 #85217Fabiano SilvaParticipante
Ola, meu codigo esta diferente do codigo da aula, mas o proprio codigo gerado pelo Android Studio ja ficou diferente, talvez pela diferença de tempo em que estou fazendo o curso. Mas não consigo saber qual é o problema:
package com.example.olamundo20
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.TextViewclass MainActivity : AppCompatActivity() {
TextView msg;
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
msg = (TextView) findViewById(R.id.Mensagem)
}fun clicou(view: View) {
msg.setText(“Olá, Mundo!”);
}
}Android Studio: Modulo 00,
M00A09
10:45min-
2 de fevereiro de 2022 às 22:05 #85415IcaroFilhoModerador
Boa noite Fabiano, acredito que tenha postado no forum errado.
Faça o questionamento dentro do Fórum referente ao android estudo. [ LINK ]
-
-
8 de julho de 2022 às 19:52 #97073Manoel Garcia De Noronha NetoParticipante
Como eu fiz!!!
programa
{inclua biblioteca Util –> u
funcao inicio()
{
escreva(“{ EXERCÍCIO 045 – Jogo De Adivinhar }”)
escreva(“\nVou pensar em um número entre 1 e 10”)
escreva(“\nVocê tem 3 CHANCES para tentar adivinhar”)
escreva(“\n——————————————“)
inteiro c=0,s,n
s = u.sorteia(1,10)
faca{
c++
escreva(“\nChance de no. “,c,”/3. Em que número eu pensei? “)
leia(n)
se (n == s){
escreva(“ACERTOU em “,c,” tentativas!”)
pare
}
se ( n < s e c != 3){
escreva(“Ainda não foi dessa vez… Mas vou te dar outra chance. Chute um valor Maior”)
}senao{
se(n > s e c != 3) escreva(“Ainda não foi dessa vez… Mas vou te dar outra chance. Chute um valor Menor”)
se(n != s e c ==3) escreva(“Ainda não foi dessa vez… Suas chances acabaram!”)
}}enquanto(c != 3)
escreva(“\n========== FIM DO JOGO ==========”)
}
} -
11 de julho de 2022 às 10:15 #97269Tutora JessicaModerador
Olá Manoel, peço para que quando for nos enviar sua dúvida ou compartilhar seu código conosco, se atente em ver se já tem esse tópico criado, para mantermos o fórum organizado. 🖖🖖
Reposicionei seu código para o tópico do exercício 45.
Você tem alguma dúvida quanto ao seu código? -
8 de novembro de 2022 às 09:22 #104537Neander FontesParticipante
Olá Pessoal!! Meu Código está com Saídas corretas, porém diferente do pensamento do professor.
Gostaria de saber se realmente está funcionando, Obrigado!programa { /* Módulo03 Aula10 + 11 - 'faca enquanto' Faça Enquanto * Portugol Exercício 045 * Autor: Neander * Data: 08/11/2022 * Local: Portugal-Braga * Empresa: Estudonauta */ inclua biblioteca Texto --> txt inclua biblioteca Util --> u funcao inicio() { //Exercício 045: - Jogo de Adivinhar escreva("{ EXERCÍCIO 45 - Jogo de Adivinhar }") //Obs.: //Declarações de Variáveis: inteiro contador, numSorteado inteiro numDigitado //Entrada de Dados: escreva("\n\n=======================================") escreva("\n\t Jogo de Adivinhar") escreva("\n=======================================") //Declarações Fixas: contador = 1 //Declarações do Escopo Principal: escreva("\nVou pensar em um número entre 1 e 10.") escreva("\nVocê tem 3 CHANCES para tentar adivinhar qual é o nº e.....") u.aguarde(700) escreva("\n\t\t### Valendo !!! ####") numSorteado = sorteia(1, 10) escreva("\n Número sorteado para Base: " + numSorteado) escreva("\n" + contador + "ª Chance de 3x. Em Qual Número Estou Pensando? ") leia(numDigitado) faca { se (numSorteado == numDigitado e contador == 1) { escreva("\n### Parabéns!!! ### Acertou na 1ª Tentativa!! ###") pare } senao { se (numSorteado == numDigitado e contador == 2) { escreva("\n### Parabéns!!! ### Acertou na 2ª Tentativa!! ###") pare } senao se (numSorteado < numDigitado e contador >= 1 e contador <= 2) { escreva("\nAinda não foi dessa vez...") escreva("\nDessa vez tente um número MENOR") escreva("\n" + (contador + 1) + "ª Chance de 3x. Em Qual Número Estou Pensando? ") leia(numDigitado) } senao se (numSorteado > numDigitado e contador >= 1 e contador <= 2) { escreva("\nAinda não foi dessa vez...") escreva("\nDessa vez tente um número MAIOR") escreva("\n" + (contador + 1) + "ª Chance de 3x. Em Qual Número Estou Pensando? ") leia(numDigitado) } senao { se (numSorteado == numDigitado e contador == 3) { escreva("\n### Parabéns!!! ### Acertou na 3ª Tentativa!! ###\n") pare } senao se (numSorteado != numDigitado e contador == 3) { escreva("\nInfelizmente não foi dessa vez!! Tente Novamente!!") } } } contador++ } enquanto (contador != 4) //Declarações Finais: }
-
8 de novembro de 2022 às 10:59 #104541Tutora JessicaModerador
Ola Neander, sim esta funcionando, mas o seu código esta mostrando qual número sorteou e o número não deve aparecer para o usuário..
Fora isso esta funcionando direitinho. Parabéns 🖖 -
28 de novembro de 2023 às 10:53 #127682Gustavo de Azevedo CorreaParticipante
Fiz dessa forma…
Alguém pode testar para mim?
Gratoprograma
{
inclua biblioteca Util–>ufuncao inicio()
{inteiro c=1, vs=0, vi=1, vf=10, n, s=1, c1=1
escreva(“EXERCÍCIO 045 – JOGO DE ADIVINHAR \n”)
escreva(“==============================================\n”)
escreva(“Pense em um número entre 1 e 10\n”)
escreva(“Você tem apenas 3 tentativas\n”)
escreva(“————————————————\n”)
enquanto(c==1){
vs = u.sorteia(vi, vf)
c++
}
faca{
escreva(“Chance “+c1+” de 3. Pense e digite um número: “)
leia(n)
se (n==vs){
escreva(“PARABÉNS!!! VOCÊ ACERTOU NA “+c1+”º tentativa”)
pare
}senao se (n < vs e c1<=2)
escreva(“\nAinda não…Chute um número MAIOR\n”)
senao se (n > vs e c1<=2)
escreva (“\nTente mais uma…Chute um valor MENOR, agora vai!\n”)
senao se (n != vs e c1<=3)
escreva(“\nSorry…Não foi dessa vez! Quem sabe a próxima.”)
c1++
}enquanto (c1<=3)
escreva(“\n————————————————\n”)}
} -
28 de novembro de 2023 às 14:04 #127688Tutora JessicaModerador
Ola Gustavo, no seu código há algum erro ou duvida?
-
28 de novembro de 2023 às 16:57 #127703Gustavo de Azevedo CorreaParticipante
Olá, Jéssica
Não, aqui esta rodando como solicitado. Gostaria de saber se pode ser melhorado alguma coisa no código.
grato. -
29 de novembro de 2023 às 10:06 #127729Tutora JessicaModerador
Ola Gustavo, seu código está funcionando, isso que é o mais importante, dê sempre uma olhada nas resoluções no fórum , cada um faz do seu próprio jeito.
Parabéns 👏🏼
Bons estudos 🖖🏼
-
-
-
AutorPosts
- Você deve fazer login para responder a este tópico.