Ir ao conteúdo
  • Cadastre-se

VisualG Loop infinito no visualg


Ir à solução Resolvido por Simon Viegas,

Posts recomendados

var
   numero: real
   numeros_entrados: inteiro
   media: inteiro
inicio
   // Entrada de Dados
   escreva(" Digite um número: ")
   leia(numero)
   se numero>-0 faca
      para numeros_entrados de 1 ate 10 faca
         escreva(" A quantia de números digitados foi: ", numeros_entrados)
      fimpara
fimalgoritmo

 

Faça um programa que leia número reais maiores que zero. Quando for entrado o número zero, o programa deverá apresentar quantos números foram entrados e a média destes. Esse é o enunciado.

 

Bom, estou tendo dificuldades em fazer com que os números entrados sejam exibidos, pois não descobri ainda como atrelar a quantia de digítos para o algoritmo. Não sei fazer ele contar. Sei que é uma estrutura de repetição, mas quando tentei fazer a estrutura conta até 10, e não quantos números foram entrados. 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@dve A ideia básica é, faça um vetor para guardar os números (com o tamanho entre 100 a 500 posições) declare uma variável para pegar a quantidade de números digitados e outra para auxiliar.

Faça um loop com o repita ... até para pegar os números utilize a variável para pegar a quantidade de números como índice do vetor.

Faça outro loop do tipo para ... faça e utilize a quantidade da variável usada para contar quantos números foram digitados como ponto final e use a variável auxiliar para contar, agora você só precisa mostrar os valores no loop.

 

De uma olhada no manual do Visualg

http://manual.visualg3.com.br/doku.php?id=manual

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

var
numero1, numero2: real
numeros_entrados: inteiro
media: real
inicio
// Entrada de Dados
escreva(" Digite um número: ")
leia(numero1)
escreva(" Digite outro número: ")
leia(numero2)
enquanto (numero2=0) faca
   escreva(" Números entrados: 1. ")
media<-numero1+numero2/100
escreva("A média dos números é: ", media)
fimenquanto
fimalgoritmo

Faça um programa que leia número reais maiores que zero. Quando for
entrado o número zero, o programa deverá apresentar quantos números
foram entrados e a média destes. Enunciado aí.

 

entao fml, o problema é o seguinte. o codigo roda normalmente, e até onde eu sei tudo o que foi pedido no enunciado foi feito, porém quando chega em media ele entra em um loop infinito. alguém  sabe como resolver com outra estrutura de repetição? outro detalhe é que não sei se a média está certa, e pelo que testei aqui, de acordo com meu codigo a media entre 9000 e 0 é 9000. 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP
  • Solução

@dve, você precisaria assimilar melhor o problema. Daí tentar criar um algoritmo a partir do que entendeu.

 

Tente entender que o "assimilação" não tem relação com o VisualG. Está mais voltado para "interpretação de textos" mesmo. O VisualG seria apenas uma ferramenta que tentaria automatizar o que você entendeu...

 

 

Vamos tentar destrinchar o enunciado:

 

14 horas atrás, dve disse:

[1] Faça um programa que leia número reais maiores que zero. [2] Quando for entrado o número zero, [3] o programa deverá apresentar [4] quantos números foram entrados e [5] a média destes.

 

Para o [1], estaria meio que claro... ele quer que obtenha os dados de alguma forma. No contexto do problema seria "via teclado", os dados informados pelo usuário... Mas poderia ser de qualquer forma... por um formulário no Google; por um arquivo de texto etc., entende?  A a "essência" é que precisa obter os dados...

 

Basicamente no VisualG seria o que você fez:

   escreva ("Digite um número: ")
   leia(numero)

 

 

Para [2], ele quer que faça o [1] até que determinada condição seja feita. Como você deve está estudando, o para seria mais voltado para "loops com quantidade pré-determinadas", mas que não é o caso... ou seja: talvez seria mais adequado utilizar o enquanto ou o repita.

 

Para o [3], ele quer que, após o [2], apresente "informações". No caso, os dados serão o [4] e o [5]... Ou seja: em algum momento seria necessário processar os dados de [1] para obter o [4] e [5].

 

Segue um algoritmo parcial:

 

repita
  leia um número
  atualize a quantidade de entrados
  adicione o valor do número a soma total dos números
até número igual a 0

calcule a média
exiba a quantidade de números entrados
exiba a média dos entrados

 

Um código poderia ser mais ou menos assim:

Obs.: o algoritmo inicial e código estão incompletos... ainda tem problemas, sendo necessário reanalisar e complementar.

 

algoritmo "Quantidade de números e a média deles"
var
   numero: real
   somaNumeros: real
   qtdEntrados: inteiro
   media: real
inicio
   repita ///[2]
      escreva ("Digite um número positivo (ou 0 para sair): ")
      leia(numero) //[1]

      //atualiza a quantidade de números entrados
      qtdEntrados <- qtdEntrados+1
      //atualiza a soma dos números entrados
      somaNumeros <- somaNumeros+numero
   ate (numero = 0) //fim [2]
   

   //[3]
   media <- somaNumeros/qtdEntrados
   escreval("Quantidade de entrados:", qtdEntrados) //[4]
   escreval("Média dos entrados    :", media) //[5]
   //fim [3]
fimAlgoritmo

 

Falta por exemplo inserir uma lógica para tratar os números negativo e cuidar da soma dos números (ele está contabilizando o 0, mas não deveria [assim como não deve contabilizar os negativos]).

 

Por aí vai

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

  • 5 meses depois...
  • Membro VIP

Como não obtive respostas, segue um exemplo:
 

algoritmo "Quantidade de números e a média deles"
//[1] Faça um programa que leia números reais maiores que zero. [2] Quando for
//entrado o número zero, [3] o programa deverá apresentar [4] quantos números
//foram entrados e [5] a média destes.
var
   numero: real
   somaNumeros: real
   qtdEntrados: inteiro
   media: real
inicio
   //[2]
   repita
      //[1]
      repita
         escreva ("Digite um número positivo (ou 0 para sair): ")
         leia(numero)
         
         se (numero < 0) entao
            escreval("Número negativo não pode, pai!")
         fimSe
      ate numero >= 0
      //fim [1]

      qtdEntrados <- qtdEntrados+1
      somaNumeros <- somaNumeros+numero
   ate (numero = 0)
   //fim [2]

   //[3]
   media <- somaNumeros/qtdEntrados
   escreval("Quantidade de entrados:", qtdEntrados) //[4]
   escreval("Média dos entrados    :", media) //[5]
   //fim [3]
fimAlgoritmo

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...