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 
Ir à página : 1, 2  Seguinte
AutorMensagem
guga22
Iniciante
Iniciante


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

MensagemAssunto: Repetição   Qua Nov 14, 2007 10:31 am

Eu não estou conseguindo fazer este algoritmo

Elabore um algoritmo que receba dois números inteiros positivos. Calcule e mostre:

a. Caso os números formem um intervalo crescente, a media dos números do intervalo, incluindo os números digitados;

b. Caso os números formem um intervalo decrescente, a quantidade de números pares, incluindo os números digitados;

c. Se os números forem iguais, mostrar uma mensagem correspondente a situação.

Aqui esta a minha solução em forma de texto
Eu não sei colocar os numeros em ordem crescente
Calcular a media dos numeros digitados



Eu sei que um numero e par quando (n1%n2=0)
Se os numeros forem iguais (n1=n2)
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   Sex Nov 16, 2007 2:39 pm

Explica melhor o que pede o problema, assim posso tentar ajuda-lo.

abracos.
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   Sex Nov 16, 2007 5:52 pm

O algoritmo pede a entrada de 2 numeros e verificar cada uma das situações abaixo:

a. Caso os números formem um intervalo crescente, a media dos números do intervalo, incluindo os números digitados;

b. Caso os números formem um intervalo decrescente, a quantidade de números pares, incluindo os números digitados;

c. Se os números forem iguais, mostrar uma mensagem correspondente a situação.
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   Seg Nov 19, 2007 4:31 pm

Isso realmente está muito confuso, veja se é isso:

O usuário digita 2 e depois o 6. Podemos ver que estão crescendo, entre eles existe o número 3, 4, 5, farei a média desses números?

O usuário digita 6 e depois o 2. Podemos ver que estão decrescendo, entre eles existem os números 3, 4, 5, desses números so o 4 é par, mas tenho o 6 e o 2, deveria escrever 3 então?

Se ele digitar 4 e 4, deve exibir uma mensagem do tipo:
"Números iguais."

É isso que você deseja? Se for, poste em que parte você está tendo problemas.

_________________
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   Seg Nov 19, 2007 7:36 pm

E isso mesmo que o algoritmo pede mais eu não sei fazer isso sem usar o opção de escolha e caso.
Teria outra opção com o comando se ou repetição?
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   Seg Nov 19, 2007 9:15 pm

E você não pode utilizar essas funções?

_________________
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   Ter Nov 20, 2007 11:03 am

Posso mais o exercicio e mais para estrutura de repeticao
E como ficar entao a estruta?
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:30 pm

Guga, fiz o algoritmo aqui, rodou e funcionou perfeitamente. Usei apenas estrutura do tipo "Se" e "Para"

--> Faca a leitura dos numeros;
--> Depois de feito a leitura, faca uma variavel auxiliar receber o valor da diferenca dos mesmos, ex: aux <- num2 - num1
--> A partir dai comecam os teste, observe que:

-> Se a variavel auxiliar receber um valor positivo, ou seja, maior que zero, os numeros digitados estarao formando um intervalo crescente;
- Como fazer para obter a media do intervalo crescente incluindo os numeros digitados? É simples, basta usar o para, exemplo:

Para i de num1 ate num2 faca //Desta forma voce podera trabalhar com todos os numeros a partir de num1 ate num2, use um contador e um acumulador para poder encontrar a media entre o intervalo

-> Se a variavel auxiliar receber um valor negativo, ou seja, menor que zero, os numeros digitados estarao formando um intervalo decrescente;
- Como fazer para obter a quantidade de numeros pares no intervalo decrescente incluindo os numeros digitados tambem e simples, exemplo:

Para i de num2 ate num1 faca //Assim voce podera trabalhar com todos os numeros a partir de num1 ate num2. Para testar se os numeros sao pares basta fazer o teste usando o operador MOD.

-> Se nao for nenhum dos dois casos acima, significa que a variavel auxiliar recebeu valor igual a zero e portanto os numeros digitados sao iguais;

Espero ter ajudado, abracos.
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:14 pm

Vou fazer 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 10:21 am

Eu fiz mais esta tudo errado poderia corrigir o erro para mim?

algoritmo "funções"
// Função : Verificar numeros digitados
// Autor : Gustavo Rodrigues Torre
// Data : 07/11/07
// Seção de Declarações
var
n1, n2 : inteiro
aux, i : inteiro
mac, mad : inteiro
acm, acmp : inteiro
c, cp : inteiro
//mac : media crescente
//mad : media descrescente
//aux : variavel para receber a diferença dos numeros
//i : contador
inicio
// Seção de Comandos
escreva("Entre com os numeros: ")
leia(n1,n2)

aux <- n2 - n1

se (aux>0) entao
escreva(n1,n2)
fimse
Para i de num1 ate num2 faca
c <- c + 1
acm <- acm + 1
fimpara
mac <- acm/c


se (aux<0) entao
escreva(n2,n1)
fimse
para i de num2 ate num1 faca //Desta forma voce podera trabalhar com todos os numeros a partir de num1 ate num2, use um contador e um acumulador para poder encontrar a media entre o intervalo

se (n1 mod n2 = 0) entao
acmp <- acmp + 1
cp <- cp + 1
mad <- acm/cp
fimpara
escreval("Os numeros",mac)
escreval("Os numeros",mad)

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   Qua Nov 21, 2007 11:15 am

o q eu postei rodou legal...nao sei pq foi apagado
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 11:18 am

Pq o algoritmo não conta os elementos pares?
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   Qua Nov 21, 2007 11:33 am

Quando o primeiro número e o último número de uma determinada sequencia são pares, a quantidade de pares é igual ao total de números dividido por dois somado de 1/2.
Quando o primeiro e o último número da sequencia são ímpares, a quantidade de pares é igual ao total de númerod dividido por dois subtraído de 1/2.
Quando um número for par e o outro for ímpar entaoa quantidade de pares é igual ao total dividido por 2.
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 11:33 am

Thiago
O algoritmo que você me passou não esta contando os numeros pares
O que esta errado?

algoritmo "semnome"
var
n,j,c,n1,n2,par,d:inteiro
media,aux:real
inicio

leia(n1,n2)
se n1<n2 entao
para c de n1 ate n2 faca
n <- n+n1+n2
d <- d+2
fimpara
c<- c-1
media<- n/d
escreval("A média dos valores é :",media)
fimse
se n1 > n2 entao
para c de n2 ate n1 faca
aux<- aux + 1
fimpara
se (n1 mod 2 =0)e(n2 mod 2=0) entao
aux<- (aux/2) + 0.5
fimse
se (n1 mod 2 <>0)e(n2 mod 2<>0) entao
aux<- (aux/2) - 0.5
fimse
se (n1 mod 2 = 0)e(n2 mod 2<>0) ou (n1 mod 2 <>0)e(n2 mod 2 = 0)entao
aux<- (aux/2)
escreval("A quantidade de pares é :",aux)
fimse
fimse
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   Qua Nov 21, 2007 11:36 am

Ele diz quantos pares tem na sequencia, só usei contador para ver o total de números.
Leia a postagem acima da sua que está detalhado
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 11:39 am

Então eu vou precisar colocar mais um contador para ele contar os pares?
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   Qua Nov 21, 2007 12:00 pm

O resultado que vc precisa é saber quantos pares tem na sequencia, o algoritmo que fiz não fica testando número por número pra saber se eh par ou nao, o algoritmo segue a regra e fala quantos pares tem.
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:00 pm

guga22 veja:
gfilho escreveu:

Guga, fiz o algoritmo aqui, rodou e funcionou perfeitamente. Usei apenas estrutura do tipo "Se" e "Para"

--> Faca a leitura dos numeros;
--> Depois de feito a leitura, faca uma variavel auxiliar receber o valor da diferenca dos mesmos, ex: aux <- num2 - num1
--> A partir dai comecam os teste, observe que:

-> Se a variavel auxiliar receber um valor positivo, ou seja, maior que zero, os numeros digitados estarao formando um intervalo crescente;
- Como fazer para obter a media do intervalo crescente incluindo os numeros digitados? É simples, basta usar o para, exemplo:

Para i de num1 ate num2 faca //Desta forma voce podera trabalhar com todos os numeros a partir de num1 ate num2, use um contador e um acumulador para poder encontrar a media entre o intervalo

-> Se a variavel auxiliar receber um valor negativo, ou seja, menor que zero, os numeros digitados estarao formando um intervalo decrescente;
- Como fazer para obter a quantidade de numeros pares no intervalo decrescente incluindo os numeros digitados tambem e simples, exemplo:

Para i de num2 ate num1 faca //Assim voce podera trabalhar com todos os numeros a partir de num1 ate num2. Para testar se os numeros sao pares basta fazer o teste usando o operador MOD.

-> Se nao for nenhum dos dois casos acima, significa que a variavel auxiliar recebeu valor igual a zero e portanto os numeros digitados sao iguais;

Espero ter ajudado, abracos.

Preste atenção no que ele postou.

Agora veja o algoritmo que você fez:

guga22 escreveu:
algoritmo "funções"
// Função : Verificar numeros digitados
// Autor : Gustavo Rodrigues Torre
// Data : 07/11/07
// Seção de Declarações
var
n1, n2 : inteiro
aux, i : inteiro
mac, mad : inteiro
acm, acmp : inteiro
c, cp : inteiro
//mac : media crescente
//mad : media descrescente
//aux : variavel para receber a diferença dos numeros
//i : contador
inicio
// Seção de Comandos
escreva("Entre com os numeros: ")
leia(n1,n2)

aux <- n2 - n1

se (aux>0) entao
escreva(n1,n2)
fimse
Para i de num1 ate num2 faca
c <- c + 1
acm <- acm + 1
fimpara
mac <- acm/c


se (aux<0) entao
escreva(n2,n1)
fimse
para i de num2 ate num1 faca //Desta forma voce podera trabalhar com todos os numeros a partir de num1 ate num2, use um contador e um acumulador para poder encontrar a media entre o intervalo

se (n1 mod n2 = 0) entao
acmp <- acmp + 1
cp <- cp + 1
mad <- acm/cp
fimpara
escreval("Os numeros",mac)
escreval("Os numeros",mad)

fimalgoritmo


guga22 escreveu:
se (aux>0) entao
escreva(n1,n2)
fimse
Para i de num1 ate num2 faca
c <- c + 1
acm <- acm + 1
fimpara
mac <- acm/c

escreva(n1,n2) isso não é necessário, é?
Para i de num1 ate num2 faca
c <- c + 1
acm <- acm + 1
fimpara


Isso só deveria acontecer caso o "se" fosse verdadeiro, ou seja, se aux fosse > 0.
Se você precisa da média, um deveria ser o contador, e o outro somar os valores, ou seja : c <- c + 1 está errado, ele deveria receber os valores dentro dos dois números digitados e não +1, quem recebe +1 é o contador.

guga22 escreveu:
se (aux<0) entao
escreva(n2,n1)
fimse
para i de num2 ate num1 faca //Desta forma voce podera trabalhar com todos os numeros a partir de num1 ate num2, use um contador e um acumulador para poder encontrar a media entre o intervalo

se (n1 mod n2 = 0) entao
acmp <- acmp + 1
cp <- cp + 1
mad <- acm/cp
fimpara
Existe os dois mesmos erros, o da condição ( desta forma o loop sempre vai acontecer ) e o escreve desnecessário.

Mas existe mais alguns, se você deseja saber se um número é par ou não por que usar essa estrutura: se (n1 mod n2 = 0) ?

Outra coisa, se o intervalo for decrescente, você não deve fazer a média, e sim verificar os números pares apenas. Ou seja: <- acm/cp está incorreto.

Agora uma dúvida, pelo que eu vi não é necessário, mas você precisa mostrar os números pares, ou so a quantidade?

Vejo que você esqueceu de verificar se os números são iguais, por quê?

_________________
Equipe VisualgMaster.
Voltar ao Topo Ir em baixo
Ver perfil do usuário http://visualgmaster.livreforum.com
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:15 pm

Amigo, agora que eu fui fazer que eu percebi, você e esse ctrl+c, ctrl+v.
guga22 escreveu:
Para i de num1 ate num2 faca
Você nem declarou essas variáveis.
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   Qua Nov 21, 2007 12:25 pm

Olha o algoritmo certo e este aqui

algoritmo "semnome"
var
n,j,c,n1,n2,par,d:inteiro
media,aux:real
inicio

leia(n1,n2)
se n1<n2 entao
para c de n1 ate n2 faca
n <- n+n1+n2
d <- d+2
fimpara
c<- c-1
media<- n/d
escreval("A média dos valores é :",media)
fimse
se n1 > n2 entao
para c de n2 ate n1 faca
aux<- aux + 1
fimpara
se (n1 mod 2 =0)e(n2 mod 2=0) entao
aux<- (aux/2) + 0.5
fimse
se (n1 mod 2 <>0)e(n2 mod 2<>0) entao
aux<- (aux/2) - 0.5
fimse
se (n1 mod 2 = 0)e(n2 mod 2<>0) ou (n1 mod 2 <>0)e(n2 mod 2 = 0)entao
aux<- (aux/2)
escreval("A quantidade de pares é :",aux)
fimse
fimse
fimalgoritmo
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 12:26 pm

E como o Thiago falou anteriormente

"Quando o primeiro número e o último número de uma determinada sequencia são pares, a quantidade de pares é igual ao total de números dividido por dois somado de 1/2.
Quando o primeiro e o último número da sequencia são ímpares, a quantidade de pares é igual ao total de númerod dividido por dois subtraído de 1/2.
Quando um número for par e o outro for ímpar entaoa quantidade de pares é igual ao total dividido por 2"

guga22 escreveu:
Olha o algoritmo certo e este aqui

algoritmo "semnome"
var
n,j,c,n1,n2,par,d:inteiro
media,aux:real
inicio

leia(n1,n2)
se n1<n2 entao
para c de n1 ate n2 faca
n <- n+n1+n2
d <- d+2
fimpara
c<- c-1
media<- n/d
escreval("A média dos valores é :",media)
fimse
se n1 > n2 entao
para c de n2 ate n1 faca
aux<- aux + 1
fimpara
se (n1 mod 2 =0)e(n2 mod 2=0) entao
aux<- (aux/2) + 0.5
fimse
se (n1 mod 2 <>0)e(n2 mod 2<>0) entao
aux<- (aux/2) - 0.5
fimse
se (n1 mod 2 = 0)e(n2 mod 2<>0) ou (n1 mod 2 <>0)e(n2 mod 2 = 0)entao
aux<- (aux/2)
escreval("A quantidade de pares é :",aux)
fimse
fimse
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:29 pm

Bom, nesse algoritmo eu digitei 6 e 2 e ele não me retornou nada, vou dar uma olhada melhor.

_________________
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 12:34 pm

Tenta este aqui

algoritmo "semnome"
var
n,j,c,n1,n2,par,d:inteiro
media,aux:real
inicio
leia(n1,n2)
se n1<n2 entao
para c de n1 ate n2 faca
n<- n+n1+n2
d<- d+2
fimpara
c<- c-1
media<- n/d
escreval("A média dos valores é :",media)
fimse
se n1 > n2 entao
para c de n2 ate n1 faca
aux<- aux + 1
fimpara
se (n1 mod 2 =0)e(n2 mod 2=0) entao
aux<- (aux/2) + 0.5
fimse
se (n1 mod 2 <>0)e(n2 mod 2<>0) entao
aux<- (aux/2) - 0.5
fimse
se (n1 mod 2 = 0)e(n2 mod 2<>0) ou (n1 mod 2 <>0)e(n2 mod 2 = 0)entao
aux<- (aux/2)
escreval("A quantidade de pares é :",aux)
fimse
fimse
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:37 pm

Veja:
guga22 escreveu:
se n1 > n2 entao
para c de n2 ate n1 faca
aux<- aux + 1
fimpara
se (n1 mod 2 =0)e(n2 mod 2=0) entao
aux<- (aux/2) + 0.5
fimse
se (n1 mod 2 <>0)e(n2 mod 2<>0) entao
aux<- (aux/2) - 0.5
fimse
se (n1 mod 2 = 0)e(n2 mod 2<>0) ou (n1 mod 2 <>0)e(n2 mod 2 = 0)entao
aux<- (aux/2)
escreval("A quantidade de pares é :",aux)
Já que você só precisa saber a quantidade de pares, você só precisa de um "se". Eu não entendi esse 0.5. Use apenas um "se" para saber quantos pares existem no intervalo, a cada par você deve acumular a um contador.

_________________
Equipe VisualgMaster.
Voltar ao Topo Ir em baixo
Ver perfil do usuário http://visualgmaster.livreforum.com
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:38 pm

Esse continua sem mostrar.

_________________
Equipe VisualgMaster.
Voltar ao Topo Ir em baixo
Ver perfil do usuário http://visualgmaster.livreforum.com
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 2Ir à página : 1, 2  Seguinte
 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: