VisualgMaster

Bem vindo ao fórum visualgmaster, tudo relacionado ao visualg, tire suas dúvidas, resolva seus algoritmos.
 
InícioInício  PortalPortal  FAQFAQ  BuscarBuscar  Registrar-seRegistrar-se  MembrosMembros  GruposGrupos  Conectar-se  

Compartilhe | 
 

 Repetição

Ver o tópico anterior Ver o tópico seguinte Ir em baixo 
AutorMensagem
guga22
Iniciante
Iniciante


Número de Mensagens : 175
Data de inscrição : 27/10/2007

MensagemAssunto: Repetição   Seg Nov 19, 2007 9:33 am

Faça um algoritmo que leia uma quantidade não determinada de números positivos. Calcule a quantidade de números pares e ímpares, a média de valores pares e a média geral dos números lidos. O número negativo encerrará a leitura.

Eu fiz mais esta contando os pares e impares errado

algoritmo "contagem 2 "
// Função :
// Autor :
// Data : 01/11/07
// Seção de Declarações
var
somap,somai : inteiro
numeros : inteiro
ma, mg : real
n : inteiro
c : inteiro
inicio
// Seção de Comandos
numeros <- 0
somap <- 0
somai <- 0
repita

escreva("Entre com um valor")
leia(n)

se (n % 2 = 0) entao // aqui ira contar os numeros positivos
//somap <- n + somap isso eh um acumulador, ou seja, a cada passagem do laco que entrar nesse se somap recebe seu ultimo valor + n.
somap <- somap + 1 // esse eh o chamado contador, ou seja, a cada passagem do laco que entrar nesse se somap recebe seu ultimo valor + 1
senao
somai <- 1 + somai
fimse

se (n % 2 <> 0) entao // aqui ira contar os numeros positivos
somai <- 1 + somai
senao
//somap <- n + somap isso eh um acumulador, ou seja, a cada passagem do laco que entrar nesse se somap recebe seu ultimo valor + n.
somap <- somap + 1 // esse eh o chamado contador, ou seja, a cada passagem do laco que entrar nesse se somap recebe seu ultimo valor + 1
fimse



numeros <- numeros + n // aqui eh um acumulador

ate n = 0

ma <- numeros / (somap + somai) //media dos numeros lidos
mg <- somap / numeros //media dos numeros pares

escreval
escreval("A quantidade de numeros pares ",somap)
escreval("A quantidade de numeros impares ",somai)
escreval("A media de numeros pares e impares ",ma)
escreval("A media geral",mg)

fimalgoritmo
Voltar ao Topo Ir em baixo
Ver perfil do usuário
Thiago
Novato
Novato
avatar

Masculino
Número de Mensagens : 13
Idade : 33
Localização : minas gerais
Data de inscrição : 10/11/2007

MensagemAssunto: Re: Repetição   Seg Nov 19, 2007 9:46 am

se (n % 2 = 0) entao
somap <- somap + 1
senao
somai <- 1 + somai
fimse

depois disso não há necessidade de fazer um n%2 <>0, há?

e se é pra sair do laço com número negativo o repita tem que ser ateh q o n < 0.
Voltar ao Topo Ir em baixo
Ver perfil do usuário
guga22
Iniciante
Iniciante


Número de Mensagens : 175
Data de inscrição : 27/10/2007

MensagemAssunto: Re: Repetição   Seg Nov 19, 2007 8:08 pm

Acho que não tem
Corrigi o algoritmo
Mais ele esta contando um numero par a mais
algoritmo "contagem 2 "
// Função :
// Autor :
// Data : 01/11/07
// Seção de Declarações
var
somap,somai : inteiro
numeros : inteiro
ma, mg : real
n : inteiro
c : inteiro
inicio
// Seção de Comandos
numeros <- 0
somap <- 0
somai <- 0
repita

escreva("Entre com um valor")
leia(n)

se (n % 2 = 0) entao // aqui ira contar os numeros positivos
//somap <- n + somap isso eh um acumulador, ou seja, a cada passagem do laco que entrar nesse se somap recebe seu ultimo valor + n.
somap <- somap + 1 // esse eh o chamado contador, ou seja, a cada passagem do laco que entrar nesse se somap recebe seu ultimo valor + 1
senao
somai <- 1 + somai
fimse


numeros <- numeros + n // aqui eh um acumulador

ate (n = 0)

ma <- numeros / (somap + somai) //media dos numeros lidos
mg <- somap / numeros //media dos numeros pares

escreval
escreval("A quantidade de numeros pares ",somap)
escreval("A quantidade de numeros impares ",somai)
escreval("A media de numeros pares e impares ",ma)
escreval("A media geral",mg)

fimalgoritmo
Voltar ao Topo Ir em baixo
Ver perfil do usuário
Thiago
Novato
Novato
avatar

Masculino
Número de Mensagens : 13
Idade : 33
Localização : minas gerais
Data de inscrição : 10/11/2007

MensagemAssunto: Re: Repetição   Seg Nov 19, 2007 8:53 pm

Ele deve estar contando o número negativo que vc digitou, tente fazer com o laço com teste de controle no início
Voltar ao Topo Ir em baixo
Ver perfil do usuário
gfilho
Novato
Novato


Masculino
Número de Mensagens : 39
Idade : 28
Localização : Rio Branco
Data de inscrição : 15/11/2007

MensagemAssunto: Re: Repetição   Seg Nov 19, 2007 10:15 pm

Ae guga, troca esse repita por um enquanto... Usa uma variavel de controle pow, pra quando n receber um numero negativo a variavel de controle alterar seu valor interrompendo o looping. Para ver se o numero e positivo ou negativo e so usar a ideia do MOD postado em outro topico aqui do forum. abracos.

continuar <- 0
Enquanto (continuar=0) faca
Leia (n)
Aux <- n MOD 2
Se (n >=0) entao
Se (Aux=0) entao //significa que e par
{aqui vao os comandos para somar e contar os numeros pares}
senao //significa que e impar
{aqui vao os comandos para somar e contar os numeros impares}
fimse
senao
continuar <- 1
fimse
fimenquanto
Voltar ao Topo Ir em baixo
Ver perfil do usuário
guga22
Iniciante
Iniciante


Número de Mensagens : 175
Data de inscrição : 27/10/2007

MensagemAssunto: Re: Repetição   Ter Nov 20, 2007 10:59 am

O algoritmo tera a seguinte configuracao?


algoritmo "contagem 2 "
// Função :
// Autor :
// Data : 01/11/07
// Seção de Declarações
var
somap,somai : inteiro
numeros, continuar : inteiro
ma, mg : real
n, aux : inteiro
c : inteiro
inicio
// Seção de Comandos
numeros <- 0
somap <- 0
somai <- 0
continuar <- 0
Enquanto (continuar=0) faca
escreva("Entre com um valor")
leia(n)
Aux <- n MOD 2
Se (n >=0) entao
Se (Aux=0) entao //significa que e par
// aqui ira contar os numeros positivos
//somap <- n + somap isso eh um acumulador, ou seja, a cada passagem do laco que entrar nesse se somap recebe seu ultimo valor + n.
somap <- somap + 1 // esse eh o chamado contador, ou seja, a cada passagem do laco que entrar nesse se somap recebe seu ultimo valor + 1
senao
somai <- 1 + somai
fimse
senao
continuar <- 1
fimse
fimenquanto

numeros <- numeros + n // aqui eh um acumulador


ma <- numeros / (somap + somai) //media dos numeros lidos
mg <- somap / numeros //media dos numeros pares

escreval
escreval("A quantidade de numeros pares ",somap)
escreval("A quantidade de numeros impares ",somai)
escreval("A media de numeros pares e impares ",ma)
escreval("A media geral",mg)

fimalgoritmo
Voltar ao Topo Ir em baixo
Ver perfil do usuário
gfilho
Novato
Novato


Masculino
Número de Mensagens : 39
Idade : 28
Localização : Rio Branco
Data de inscrição : 15/11/2007

MensagemAssunto: Re: Repetição   Ter Nov 20, 2007 12:55 pm

Citação :
Se (Aux=0) entao //significa que e par
// aqui ira contar os numeros positivos
//somap <- n + somap isso eh um acumulador, ou seja, a cada passagem do laco que entrar nesse se somap recebe seu ultimo valor + n.
somap <- somap + 1 // esse eh o chamado contador, ou seja, a cada passagem do laco que entrar nesse se somap recebe seu ultimo valor + 1

Guga, nao intedi. Voce esta usando a mesma variavel (somap) como acumulador e contador?? Voce precisa de duas variaveis diverentes, por exemplo:

Soma_pares <- Soma_pares + n
acumulador_pares <- acumulador_pares + 1

Pelo que percebi voce esta usando "somap" para as duas coisas, desse jeito voce nao obtera o resultado esperado.

Citação :
numeros <- numeros + n // aqui eh um acumulador


ma <- numeros / (somap + somai) //media dos numeros lidos
mg <- somap / numeros //media dos numeros pares

o acumulador "numeros" pelo que percebi deve calcular a quantidade de numero digitados, entao, para isso ele tera que ser colocado dentro do enquanto, se ficar fora ele recebera apenas o valor negativo que a variavel n estara guardando apos terminar o looping. Esse acumulador e desnecessario. Voce pode fazer o seguinte:

- antes do fimenquanto, coloque um contador, para contar a quantidade de numeros digitados, ex: contador <- contador + 1

- Para calcular a media total basta somar os numeros pares com os numeros impares e dividir pelo contador acima mencionado, ex: (somap + somai) / contador

- a media dos numeros pares deve ser feita divido o acumulador dos numeros pares pelo contador dos mesmos, ex: acumulador_pares / contador_pares
Voltar ao Topo Ir em baixo
Ver perfil do usuário
gfilho
Novato
Novato


Masculino
Número de Mensagens : 39
Idade : 28
Localização : Rio Branco
Data de inscrição : 15/11/2007

MensagemAssunto: Re: Repetição   Ter Nov 20, 2007 1:00 pm

Lembre-se:

-Para calcular a quantidade de numeros voce precisa de contadores, exemplo:

contador_par <- contador_par + 1

-Para calcular a soma de numeros voce precisa de acumuladores, exemplo:

acumulador_par <- acumulador_par + 1

-Para calcular a media desses numeros voce precisa dividir o acumulador pelo contador, exemplo:

- media_par <- acumulador_par / contador_par
Voltar ao Topo Ir em baixo
Ver perfil do usuário
guga22
Iniciante
Iniciante


Número de Mensagens : 175
Data de inscrição : 27/10/2007

MensagemAssunto: Re: Repetição   Ter Nov 20, 2007 6:15 pm

Vou resolver o algoritmo depois eu posto aqui
Voltar ao Topo Ir em baixo
Ver perfil do usuário
guga22
Iniciante
Iniciante


Número de Mensagens : 175
Data de inscrição : 27/10/2007

MensagemAssunto: Re: Repetição   Qua Nov 21, 2007 9:44 am

Resolvi como esta neste tópico e continua contando um numero a mais

algoritmo "contagem 2 "
// Função : Faça um algoritmo/programa que leia uma quantidade não determinada
//de números positivos. Calcule a quantidade de números pares e ímpares,
//a média de valores pares e a média geral dos números lidos.
//O número negativo encerrará a leitura.
// Autor :
// Data : 01/11/07
// Seção de Declarações
var
somap,somai : inteiro
acm_p, acm_i : inteiro
numeros : inteiro
mp, mg : real
n : inteiro
c : inteiro
inicio
// Seção de Comandos
numeros <- 0
somap <- 0
somai <- 0
acm_p <- 0
acm_i <- 0

enquanto (n<0) faca

escreva("Entre com um valor")
leia(n)

se (n % 2 = 0) entao // aqui ira contar os numeros pares
acm_p <- acm_p + n //esse eh o chamado contador
somap <- somap + 1 //isso eh um acumulador,
fimse

se (n % 2 <> 0) entao // aqui ira contar os numeros impares
acm_i <- acm_i + n //esse eh o chamado contador
somai <- somai + 1 //isso eh um acumulador,
fimse


numeros <- numeros + 1 // aqui eh um acumulador

fimenquanto

mg <- (somap + somai) / numeros //media dos numeros lidos
mp <- acm_p / somap //media dos numeros pares

escreval
escreval("A quantidade de numeros pares ",somap)
escreval("A quantidade de numeros impares ",somai)
escreval("A media de numeros pares e impares ",mg)
escreval("A media geral",mp)

fimalgoritmo
Voltar ao Topo Ir em baixo
Ver perfil do usuário
Admin
Administradores
Administradores
avatar

Número de Mensagens : 126
Data de inscrição : 26/10/2007

MensagemAssunto: Re: Repetição   Qua Nov 21, 2007 12:56 pm

Esse número a mais, é o número negativo que você escreve para encerrar a leitura, crie uma condição para não contar ele.

_________________
Equipe VisualgMaster.
Voltar ao Topo Ir em baixo
Ver perfil do usuário http://visualgmaster.livreforum.com
guga22
Iniciante
Iniciante


Número de Mensagens : 175
Data de inscrição : 27/10/2007

MensagemAssunto: Re: Repetição   Qua Nov 21, 2007 6:08 pm

Agora consegui

Verifique se esta certo
Se estiver pode trancar o tópico

algoritmo "contagem 2 "
// Função : Faça um algoritmo/programa que leia uma quantidade não determinada
//de números positivos. Calcule a quantidade de números pares e ímpares,
//a média de valores pares e a média geral dos números lidos.
//O número negativo encerrará a leitura.
// Autor :
// Data : 01/11/07
// Seção de Declarações
var
somap,somai : inteiro
acm_p, acm_i : inteiro
numeros : inteiro
mp, mg : real
n : inteiro
c : inteiro
inicio
// Seção de Comandos
numeros <- 0
somap <- 0
somai <- 0
acm_p <- 0
acm_i <- 0
escreva("Entre com um valor")
leia(n)

repita

se (n % 2 = 0) entao // aqui ira contar os numeros pares
acm_p <- acm_p + n //esse eh o chamado contador
somap <- somap + 1 //isso eh um acumulador,
fimse

se (n % 2 <> 0) entao // aqui ira contar os numeros impares
acm_i <- acm_i + n //esse eh o chamado contador
somai <- somai + 1 //isso eh um acumulador,
fimse

numeros <- numeros + 1 // aqui eh um acumulador

escreva("Entre com um valor")
leia(n)
ate (n = 0)

mg <- (somap + somai) / numeros //media dos numeros lidos
mp <- acm_p / somap //media dos numeros pares

escreval
escreval("A quantidade de numeros pares ",somap)
escreval("A quantidade de numeros impares ",somai)
escreval("A media de numeros pares e impares ",mg)
escreval("A media geral",mp)

fimalgoritmo
Voltar ao Topo Ir em baixo
Ver perfil do usuário
gfilho
Novato
Novato


Masculino
Número de Mensagens : 39
Idade : 28
Localização : Rio Branco
Data de inscrição : 15/11/2007

MensagemAssunto: Re: Repetição   Qua Nov 21, 2007 10:46 pm

Citação :
ate (n=0)
Guga, voce disse no enunciado do problema que para encerrar a leitura o usuario devera entrar com um numero negativo, nesse caso, voce deveria usar "ate (n<0)" para que o looping fosse encerrado quando o usuario entrasse com um numero negativo. Da forma que voce fez, o looping so ira terminar quando o usuario entrar com o numero 0.

Citação :
mg <- (somap + somai) / numeros //media dos numeros lidos
mp <- acm_p / somap //media dos numeros pares

escreval
escreval("A quantidade de numeros pares ",somap)
escreval("A quantidade de numeros impares ",somai)
escreval("A media de numeros pares e impares ",mg)
escreval("A media geral",mp)

Voce esta comentendo alguns enganos:
-a media dos numeros pares esta sendo calculada em mp (soma total dos numeros pares / quantidade de numeros pares)

-a media geral esta sendo calculada em mg (soma total de todos os numeros digitados / quantidade de numeros digitados)

-media dos numeros pares e impares?
Voltar ao Topo Ir em baixo
Ver perfil do usuário
guga22
Iniciante
Iniciante


Número de Mensagens : 175
Data de inscrição : 27/10/2007

MensagemAssunto: Re: Repetição   Qui Nov 22, 2007 11:32 am

Agora vc me pegou eu não sei como fazer a media dos numeros pares
E a media total(pares e impares)
Como ficaria?
Voltar ao Topo Ir em baixo
Ver perfil do usuário
Admin
Administradores
Administradores
avatar

Número de Mensagens : 126
Data de inscrição : 26/10/2007

MensagemAssunto: Re: Repetição   Qui Nov 22, 2007 4:15 pm

guga22, preste muita atenção:
Para achar a média de números pares, é necessário, primeiro, saber se o número digitado é par, como você já sabe, isso se descobre:
"número digitado" / 2 , se o resto dessa conta for 0 então ele é par, se for 1, é impar, para isso o visualg tem o operador mod, veja um exemplo:
numero % 2 = 0
Se passar por isso, é porque o número é par.
Criada essa condição agora veremos a média:
Como eu já postei em : http://visualgmaster.livreforum.com/pedidos-de-algoritmos-f5/media-numeros-pares-t68.htm?sid=e9d97982667e09dc0c81ac1e0169b89f
Admin escreveu:

Primeiro:
O conceito de média aritmética consiste em:
Somar "X" números e dividir por "X", ex:
4 + 4 + 4 + 4 + 4 : 20
Temos um total de 5 algarismos, então : 20 / 5 = 4, onde 4 é a média.
Baseado neste conceito vemos que
acm <- (acm + n) / acm está errado.
Você
tem que criar uma nova variáve para acumular quantos números pares
existem, e dividir a soma por ela...

Agora vamos lá, já sabemos como descobrir se o número é par ou não, se ele for par devemos pegar a média, como escrito acima, a média nada mais é do que a soma dos números, no caso os pares, dividido pela quantidade de pares.
Veja nesse exemplo:
O usuário escreve : 4, 4, 4, 4, 4. Então feito o teste, descobre-se que todos os números são pares. Agora devemos somá-los para obter a média, 20. Mas 20 ainda não é a média, lembre-se de que devemos pegar essa soma e dividir pela quantidade de pares, ou seja o usuário escreve o 4, 5 vezes, então temos 5 algarismos, ou seja a média = 20/5 = 4.

Reveja esse algoritmo, praticamente a mesma dúvida http://visualgmaster.livreforum.com/pedidos-de-algoritmos-f5/media-numeros-pares-t68.htm?sid=e9d97982667e09dc0c81ac1e0169b89f

Preste mais atenção! 10% de alerta adicionado por falta de atenção.

_________________
Equipe VisualgMaster.
Voltar ao Topo Ir em baixo
Ver perfil do usuário http://visualgmaster.livreforum.com
guga22
Iniciante
Iniciante


Número de Mensagens : 175
Data de inscrição : 27/10/2007

MensagemAssunto: Re: Repetição   Qui Nov 22, 2007 4:51 pm

Vou tentar fazer
Voltar ao Topo Ir em baixo
Ver perfil do usuário
Conteúdo patrocinado




MensagemAssunto: Re: Repetição   

Voltar ao Topo Ir em baixo
 
Repetição
Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo 
Página 1 de 1
 Tópicos similares
-
» Remover repetição da imagem de fundo
» comando ou formula para evitar repetição de nomes
» Fixar fundo sem repetições independente da resolução
» Fundo do fórum sem repetição (no-repeat)
» Repetição de uma palavra no campo de perfil

Permissão deste fórum:Você não pode responder aos tópicos neste fórum
VisualgMaster :: VisualgMaster :: Pedidos de algoritmos :: Algoritmos resolvidos-
Ir para: