M03A11 – Exercícios 045

Home Fóruns Programação Básica M03A11 – Exercícios 045

Visualizando 14 respostas da discussão
  • Autor
    Posts
    • #65748

      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)
      
      		
      	}
      }
    • #65946
      Tutora Mayla
      Mestre

      Antonio, o seu código está certo, porém com um pequeno ajuste ele ficará melhor ainda.
      Em vez de colocar num=sorteia(1,10) dentro do laço e verificar se é a primeira iteração, coloque-o antes do faca, assim não há a necessidade da variável primValor podendo então ser utilizada apenas a variável num.

      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.

    • #65969

      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)
      
      		
      	}
      }
      • #66025
        Tutora Mayla
        Mestre

        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 a num já está sendo feita fora do laço, não é necessário atribuir nada a ela dentro do laço.
        Basta tirar esse bloco se que seu código estará perfeito. Parabéns!!

        Espero ter ajudado, quaisquer outras dúvidas estamos a disposição.

    • #66420

      Olá Mayla.
      Corrigi e testei, viajei kkk, obrigado!!

    • #69659

      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 =================") 
      	}
      }
      • #69850
        Tutora Mayla
        Mestre

        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 bloco se, vai depender muito da situação. Nesse caso uma forma de melhorar o seu código seria fazendo blocos se 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 bloco senao. 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 teste se(numero <= 10 e numero >= 1) poderia ser feito para ele um senao correspondente ao seguinte teste que está sendo feito atualmente de forma isolada se(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.

      • #69881

        Muito obrigado!!!

    • #76782
      João Victor
      Participante

      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! ")
      	}
      }
    • #76945
      Tutora Mayla
      Mestre

      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:

      1. 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.
      2. 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.
      3. 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 de contador, e não apenas o valor 1

      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

    • #80615
      Arthur Martins Alves
      Participante

      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")
      	}
      }
      
      • #80690
        Tutora Mayla
        Mestre

        Arthur, parabéns! Seu código está correto pois tem a saída desejada, só fique atento as variáveis maior e menor pois elas não estão sendo utilizadas após a sua atribuição.

        Quaisquer outras dúvidas estamos a disposição. Bons estudos!

    • #85217
      Fabiano Silva
      Participante

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

      class 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

      • #85415
        IcaroFilho
        Moderador

        Boa noite Fabiano, acredito que tenha postado no forum errado.
        Faça o questionamento dentro do Fórum referente ao android estudo. [ LINK ]

    • #97073

      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 ==========”)
      }
      }

    • #97269
      Tutora Jessica
      Moderador

      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?

    • #104537
      Neander Fontes
      Participante

      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:
      	}
    • #104541
      Tutora Jessica
      Moderador

      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 🖖

    • #127682

      Fiz dessa forma…
      Alguém pode testar para mim?
      Grato

      programa
      {
      inclua biblioteca Util–>u

      funcao 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”)

      }
      }

    • #127688
      Tutora Jessica
      Moderador

      Ola Gustavo, no seu código há algum erro ou duvida?

      • #127703

        Olá, Jéssica
        Não, aqui esta rodando como solicitado. Gostaria de saber se pode ser melhorado alguma coisa no código.
        grato.

      • #127729
        Tutora Jessica
        Moderador

        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 🖖🏼

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