Exercício 39 Lendo dados

Home Fóruns Programação Básica Exercício 39 Lendo dados

Visualizando 8 respostas da discussão
  • Autor
    Posts
    • #69595

      Ola´,

      consegui resolver, no entanto tentei colocar mais informações como o menor valor, no entanto não esta funcionando direito.

      será que alguém` tem alguma orientação?
      programa
      {
      inclua biblioteca Matematica–>m

      funcao inicio()
      {
      inteiro n = 0, soma = 0, valor =1
      real media
      ,menor=0, maior=0, totn = 0
      escreva(“Lendo dados\n”)
      escreva(“———-\n”)

      enquanto(n!=9999){
      escreva(valor, “o. 9999 faz parar\n”)
      escreva(“Número “)
      leia(n)

      se(n!=9999){
      soma+=n
      totn++
      valor++
      }se(valor == 1){
      maior = n
      menor = n
      }senao{
      se(n!=9999 e n<maior)
      menor = n

      }se (n!=9999 e n>maior){
      maior=n
      }

      }
      media = m.arredondar(soma/totn, 2)
      escreva(“Ao todo você digitou “+totn+” valores\n”)
      escreva(“A soma entre eles foi “+soma+”\n”)
      escreva(“A média foi “+media+”\n”)
      escreva(“o maior foi “+maior+”\n”)
      escreva(“o menor valor foi “+menor)
      }
      }

    • #69611
      IcaroFilho
      Moderador

      Bom dia, vamos as modificações que fiz.

        Bibliotecas utilizadas:

      • Adicionei a biblioteca Tipos, que será usada para conversão de inteiro para real (executado na media)
        Alterações nas variáveis:

      • Transferia as variáveis maior e menor para tipo inteiro, tendo em vista serão atribuições de n, que é um numero do tipo inteiro.
      • Removi a variavel valor, estava sendo mal empregada.
        Alterações estruturais.

      • Alterado contador numérico: escreva(valor, “o. 9999 faz parar\n”)–>escreva(totn+1, "o. 9999 faz parar\n")
      • Alterado algoritmo de media. media = m.arredondar(soma/totn, 2) –> media = m.arredondar(t.inteiro_para_real(soma)/totn, 2)
      • Aqui a comparação esta errada, por isso não pega o menor valor.

        se(n!=9999 e n > maior) 
        menor = n

        Deve-se alterar para:

        se(n!=9999 e n < menor)
        menor = n
        Extra:

      • Não sei se aprender pare, mas caso tenha, pode fazer para diminuir a quantidade de testes logicos , deixando de fazer:
        se(n!=9999 e n<maior)
        se (n!=9999 e n>maior)
      • com a reestruturação completa ficaria:
        programa
        {
        	inclua biblioteca Tipos --> t
        	inclua biblioteca Matematica --> m
        	
        	funcao inicio()
        	{
        		inteiro n = 0, soma = 0, maior = 0, menor = 0, totn = 0
        		real media 
        		escreva("Lendo dados\n")
        		escreva("----------\n")
        		 
        		enquanto(n != 9999){
        			escreva(totn+1, "o. 9999 faz parar\n") 
        			escreva("Número ")
        			leia(n)
        			se(n==9999){
        				pare
        			}senao{
        				soma+=n
        				totn++
        			}
        			se(totn == 1){
        				maior = n
        				menor = n
        			}senao {
        				se (n < menor){
        					menor = n
        				}senao se (n > maior){
        					maior = n
        				}
        			}
        		}
        		media = m.arredondar(t.inteiro_para_real(soma)/totn, 2) 
        		escreva("Ao todo você digitou "+totn+" valores\n")
        		escreva("A soma entre eles foi "+soma+"\n")
        		escreva("A média foi "+media+"\n")
        		escreva("o maior foi "+maior+"\n")
        		escreva("o menor valor foi "+menor)
        	}
        }
    • #104243
      Neander Fontes
      Participante

      Olá!! Tudo bem pessoal?
      Alguém poderia me ajudar? Na verdade é mais curiosidade, o meu código está funcionando!
      Porém eu gostaria dentro das opções saber qual é o menor valor digitado, e eu não consegui nesse caso atribuir para alguma variável.
      Poderia me ajudar na linha e raciocínio do meu código? Obrigado!!

      programa
      {/*	Módulo03 Aula08 - Repetição com Flag
      * 	Portugol Exercício038.
      *   	Autor: Neander
      *	Data: 02/11/2022
      *	Local: Portugal-Braga
      *	Empresa: Estudonauta
       */
       	inclua biblioteca Tipos --> tp
       	inclua biblioteca Matematica --> mat
      	funcao inicio()
      	{
      //Exercício 039: - Lendo Dados
      		escreva("{ EXERCÍCIO 39 - Lendo Dados }")
      		//Obs.:
      		//Declarações de Variáveis:
      		inteiro contador, num, numSoma
      		inteiro numMaior, numMenor, qtNum
      		real numMedia
      		//Entrada de Dados:
      		escreva("\n\n==================== Exercício ====================\n")
      		//Declarações Fixas:
      		contador = 1
      		num = 0
      		qtNum = 0
      		numSoma = 0
      		numMedia = 0.0
      		numMaior = 0
      		numMenor = 0
      		//Declarações do Escopo Principal:
      		enquanto (num != 9999) {
      			escreva("------------")
      			escreva("\n#### [Digite 9999 para Sair]: ####")
      			escreva("\n" + contador + "º Valor: ")
      			leia(num)
      			escreva("------------")
      			se (num != 9999) {
      				qtNum++
      				numSoma += num
      				numMedia = tp.inteiro_para_real(numSoma) / qtNum
      			} 
      			se (num > numMaior e num != 9999) {
      				numMaior = num
      			} 
      			se (num < numMenor e num != 9999) {
      				numMenor = num				
      			}
      			contador++
      		}
      		escreva("\n\n########## RESULTADOS FINAIS ##########")
      		//Declarações Finais:
      		escreva("\nAo todo você digitou " + qtNum + " valores.")
      		escreva("\nA Soma entre eles é = " + numSoma)
      		escreva("\nA Média dos valores é = " + mat.arredondar(numMedia, 2))
      		escreva("\nO Maior valor digitado é = " + numMaior)
      		escreva("\n============================================")	
      		escreva("\n\n------------------------ Fim ------------------------")
      	}
      }
      • #104268
        IcaroFilho
        Moderador

        Bom dia Neander Fontes,
        Movi seu tópico para esta postagem tendo em vista que pertence ao mesmo exercício.
        Sempre que tiver algum problema / dúvida, veja se já não existe um tópico referente ao mesmo exercício, assim mantemos um fórum mais limpo e mais fácil para outros alunos acharem resoluções por questão.

        Quanto a sua dúvida, você deve fazer com que o primeiro valor digitado seja tanto o maior quanto menor número registrado.
        A partir deste momento que você fará as verificações se o número digitado é maior/menor que o registrado.

        Dá pra analisar o código que editei baseado no do Bruno.
        Caso ainda possua dúvidas, é só postar aqui mesmo.

    • #112533
      Marcos Missone
      Participante

      Boa Noite

      Peco analise do Ex039

      inclua biblioteca Matematica --> mat
      	funcao inicio()
      	{
      
      		//VAR
      		inteiro fl = 0, maior = 0, menor = 0
      		inteiro c = 1, num = 0, soma = 0, media = 0
      
      		//ITERACAO
      		
      		enquanto(fl != 9999 ou c <= num){
      
      			se(fl != 9999){
      				
      				soma += fl
      				
      			}
      			
      			//ENTRADA DE DADOS
      			//DIFICULDADE: Os numeros digitados tem mais valores.
      			
      			escreva("\n", c , "º VALOR [9999 faz parar]")
      			escreva("\n--------------------------------")
      			escreva("\nNUMERO: ")
      			leia(fl)
      			escreva("---------------------------------")
      
      			//TESTANDO O NUMERO MAIOR E MENOR
      			//DIFICULDADE: Como tirar o flag do maior numero 
      			se(c == 1){
      					maior = fl
      					menor = fl
      				
      				}senao{
      					
      					se(fl > menor){
      						maior = fl
      					}
      					se(fl < maior){
      						menor = fl
      					}
      				}
      			c++
      		}
      		
      			//RESULTADO
      			
      			media = soma/c
      		 
      		escreva("\nAo todo voce digitou " , c , " valores")
      		escreva("\nA soma entre eles foi " , soma)
      		escreva("\nE a media foi de ",mat.arredondar(media, 3))
      		escreva("\nO maior valor digitado foi " , maior)
      		escreva("\nO menor valor digitado foi " , menor) 
      	}
      				
      }
    • #112534
      Tutora Jessica
      Moderador

      Ola Marcos, seu código precisa de atenção, ele não esta fazendo a contagem de números certo.
      Dê uma olhada na explicação acima do Ícaro e veja se consegue arrumar seu código, caso não consiga retorne ao fórum dizendo qual sua dúvida.
      Bons estudos 🖖

    • #112785

      Jéssica, ajuda – me , por favor!
      O maior número está aparecendo o 9999
      E os números digitados está contalizando o 9 sendo que só digitei 7 números.

      funcao inicio()
      {
      inteiro n = 0, valor = 1, soma = 0, media = 0, maior = 0
      enquanto (n != 9999){

      soma += n
      media = soma / valor

      escreva(“————–“)
      escreva(“\n” + valor + ” ª VALOR [9999 faz parar]”)
      escreva(“\n————-“)
      escreva(“\nNÚMERO: “)
      leia(n)
      escreva(“—————“)
      se ( n == 9999){

      }
      se (n > valor){
      valor ++
      }
      se( n > maior){
      maior = n

      }

      }
      escreva(“\n=========== RESULTADO FINAL ===========”)
      escreva(“\n”)
      escreva(“\nAo todo você digitou ” + valor + ” valores.”)
      escreva(“\nA soma entre eles foi ” + soma)
      escreva(“\nE a média foi ” + media)
      escreva(“\n”)
      escreva(“O maior valor digitado foi ” + maior )
      }

      }

    • #112815
      Tutora Jessica
      Moderador

      Ola Miguel, dê uma olhada na explicação acima do Ícaro, te sugiro refazer o seu código, ele esta faltando algumas informações importantes para o funcionamento do seu código.
      A explicação acima do Ícaro vai lhe ajudar a sanar algumas dessas informações que precisam ser colocadas no seu código.

    • #125720
      Filipe Mamud Oliveira
      Participante

      Ola Jéssica,
      Espero que o teu dia esteja indo bem, eu consegui realizar o exercicio, porém um pequeno detalhe escapou do meu codigo e não consigo sanar ele sem fazer “gambiarra” e gostaria da tua ajuda, a execução do meu programa mostra nas respostas os valores digitados porém inclue o valor do flag, ou seja se você digitar 5 valores e o sexto for o flag ele mostra que foram 6 valores digitados. Você poderia me esclarecer por favor?

      programa
      {

      inclua biblioteca Matematica –> m
      inclua biblioteca Tipos –> t
      funcao inicio()
      {
      inteiro v = 0, c = 1, soma = 0, maior = 0
      real media
      escreva(” { EXERCICIO 039 – Lendo Dados } “)
      escreva(“\n”)
      enquanto (v != 9999) {
      escreva(“————————\n”)
      escreva(c, “° VALOR [9999 faz parar]”)
      escreva(“\n————————\n”)
      escreva(“NUMERO: “)
      leia(v)
      se (v != 9999) {
      soma += v
      c++
      }
      se (v> maior e v != 9999) {
      maior = v
      }

      media = t.inteiro_para_real(soma) / c
      escreva(“=========== FLAG DIGITADO ===========\n”)
      escreva(“Ao todo você digitou “,c, ” valores\n”)
      escreva(“A soma entre eles é “, soma, “\n”)
      escreva(“A média entre eles é “, m.arredondar(media, 2), “\n”)
      escreva(“O maior valor digitado foi: “, maior, “\n”)
      }
      }

    • #125836
      Tutora Jessica
      Moderador

      Ola Filipe, te peço desculpas por ter deixado passar essa sua dúvida, você conseguiu resolver ? Ou ainda tem dúvidas?

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