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 | 
 

 Media aluno

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: Media aluno   Qua Out 31, 2007 9:18 am

Escreva um algoritmo/programa que leia o código de um aluno e suas três notas. Calcule a média ponderada do aluno, considerando que o peso para a maior nota seja 4 e para as duas restantes, 3. Mostre o código do aluno, suas três notas, a média calculada e uma mensagem "APROVADO" se a média for maior ou igual a 5 e "REPROVADO" se a média for menor que 5. Repita a operação até que o código lido seja negativo.

O que esta dando errado neste algoritmo? Ele não calcula a Média Ponderada certa.

algoritmo "media aluno"
// Função : media ponderada
// Autor : Gustavo Rodrigues Torre
// Data : 28/10/07
// Seção de Declarações
var
n1,n2,n3 : real
maior,menor,x,mp : real
co_a : inteiro
inicio
// Seção de Comandos
menor <- -1
maior <- 0
enquanto (co_a<1) faca
escreva("Digite o código do aluno: ")
leia(co_a)
escreva("Digite as notas ")
leia (n1,n2,n3)

se (n1 < menor) entao
menor <- n1
fimse
se (n2 < menor) entao
menor <- n2
fimse
se (n3 < menor) entao
menor <- n2
fimse

se (n1 > maior) entao
maior <- n1
fimse
se (n2 > maior) entao
maior <- n2
fimse
se (n3 > maior) entao
maior <- n3
fimse

x <- (maior * 4 + menor * 3 + menor * 3)
mp <- x / 10

escreval
se (mp>=5) entao
escreval("Aluno aprovado")
senao
escreval("Aluno reprovado")
fimse

escreval("As notas foram",n1,",",n2,",",n3)
escreval("O código do aluno eh",co_a)
escreval("A media ponderada foi",mp)
fimenquanto
fimalgoritmo
Voltar ao Topo Ir em baixo
Ver perfil do usuário
Suporte
Administradores
Administradores
avatar

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

MensagemAssunto: Re: Media aluno   Qua Out 31, 2007 4:06 pm

Atenção! Na maioria das vezes você pode encontrar o erro facilmente fazendo um teste de mesa ou usando a tecla 'f8' no VisuAlg que faz com que seu algoritmo seja executado passo-a-passo, desse modo pode observar o que está acontecendo.

O erro no seu algoritmo é simples e fácil de resolver: como você poderia fazer com que a variável 'menor' recebesse a menor nota se antes você a declarou com o valor -1 e uma nota só atribuirá seu valor à essa variável se a nota for menor do que 'menor', ou seja, menor do que -1 se notas vêm a partir do 0?

Defina a variável 'menor' com o valor 10, e não -1
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: Media aluno   Qua Out 31, 2007 4:43 pm

Mais então o meu algoritmo esta certo?
E só eu fazer esta alteração?
E quanto ao erro de media ponderada?
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: Media aluno   Qua Out 31, 2007 4:51 pm

Olha continua dando erro na media ponderada.
E quando pede para digitar o código do aluno. A função repita onde eu defino repita.......ate co_a<1. Esta errada?

E o que esta errado?
Já defini menor <- 10
maior <- 11

Isto esta errado?


algoritmo "media aluno"
// Função : media ponderada
// Autor : Gustavo Rodrigues Torre
// Data : 28/10/07
// Seção de Declarações
var
n1,n2,n3 : real
maior,menor,mp : real
c, co_a : inteiro
inicio
// Seção de Comandos
menor <- 10
maior <- 0
repita
escreva("Digite o código do aluno: ")
leia(co_a)

escreva("Digite as notas ")
leia (n1,n2,n3)

se (n1 < menor) entao
menor <- n1 * 3
fimse
se (n2 < menor) entao
menor <- n2 * 3
fimse
se (n3 < menor) entao
menor <- n2 * 3
fimse

se (n1 < maior) entao
maior <- n1 * 4
fimse
se (n2 < maior) entao
maior <- n2 * 4
fimse
se (n3 < maior) entao
maior <- n3 * 4
fimse

mp <- (maior * 4 + menor * 3 + menor * 3) / 10

escreval
se (mp>=5) entao
escreval("Aluno aprovado")
senao
escreval("Aluno reprovado")
fimse

escreval("As notas foram",n1,",",n2,",",n3)
escreval("O código do aluno eh",co_a)
escreval("A media ponderada foi",mp)
ate (co_a<1)
fimalgoritmo
Voltar ao Topo Ir em baixo
Ver perfil do usuário
Suporte
Administradores
Administradores
avatar

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

MensagemAssunto: Re: Media aluno   Qua Out 31, 2007 5:15 pm

Esse repita que você inseriu faz com que ele repita o código até o usuário digitar um número menor que 1 no código do aluno, parece funcionar corretamente.

Quanto a média ponderada, você deveria multiplicar as 2 notas restantes por 3, mas no seu algoritmo você multiplicou a nota menor por 3 duas vezes ao invés de multiplicar a menor nota por 3 e a nota restante por 3
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: Media aluno   Qua Out 31, 2007 5:26 pm

Agora esta correto não eh?

mp <- ((n1 * 4 + (n2 + n3) * 3)) / 10

Esta certo o repita agora que eu vi.

Ve se o que eu escrevi esta certo.
Se estiver tudo ok pode fechar o tópico ai poderemos partir para as outras questões
Voltar ao Topo Ir em baixo
Ver perfil do usuário
Suporte
Administradores
Administradores
avatar

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

MensagemAssunto: Re: Media aluno   Qua Out 31, 2007 5:50 pm

Ainda não está correto, pois ele multiplicará a primeira nota por 4 e as restantes por 3 quando deveria multiplicar a maior por 4 e as restantes por 3

Faça algo seguindo essa linha de raciocínio:

//depois de ter armazenado o maior valor na variável 'maior'
se (n1 = maior) entao
naomaior1 <- n2
naomaior2 <- n3
fimse
//fazer essa comparação com todas

mp <- (maior * 4 + naomaior1 * 3 + naomaior2 * 3) / 10
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: Media aluno   Qua Out 31, 2007 6:03 pm

Ve se esta certo que eu fiz seguindo a sua linha de raciocícinio

algoritmo "media aluno"
// Função : media ponderada
// Autor : Gustavo Rodrigues Torre
// Data : 28/10/07
// Seção de Declarações
var
n1,n2,n3 : real
maior,menor,mp,nmaior1,nmaior2,nmaior3, nmenor1, nmenor2, nmenor3 : real
c, co_a : inteiro
inicio
// Seção de Comandos
menor <- 10
maior <- 0
repita
escreva("Digite o código do aluno: ")
leia(co_a)

escreva("Digite as notas ")
leia (n1,n2,n3)

se (n1 = menor) entao
nmenor1 <- n2
nmenor2 <- n3
fimse
se (n2 = menor) entao
nmenor2 <- n1
nmenor3 <- n3
fimse
se (n3 = menor) entao
nmenor1 <- n1
nmenor2 <- n2
fimse

se (n1 = maior) entao
nmaior1 <- n2
nmaior2 <- n3
fimse
se (n2 = maior) entao
nmaior2 <- n1
nmaior3 <- n3
fimse
se (n3 = maior) entao
nmaior1 <- n1
nmaior3 <- n2
fimse

mp <- (maior * 4 + nmaior1 * 3 + nmaior2 * 3) / 10

escreval
se (mp>=5) entao
escreval("Aluno aprovado")
senao
escreval("Aluno reprovado")
fimse

escreval("As notas foram",n1,",",n2,",",n3)
escreval("O código do aluno eh",co_a)
escreval("A media ponderada foi",mp)
ate (co_a<1)
fimalgoritmo
Voltar ao Topo Ir em baixo
Ver perfil do usuário
Suporte
Administradores
Administradores
avatar

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

MensagemAssunto: Re: Media aluno   Qua Out 31, 2007 6:29 pm

guga, de acordo com o Admin, eu dou dicas e digo como fazer algoritmos, mas não posso corrigir cada nova tentativa de usuários, isso seria como entregar respostas aos poucos até entregar todo o algoritmo. Mas dessa vez responderei sua pergunta

- Está errado, como você já deve saber, pois quando executo o algoritmo a media ponderada me retorna sempre 0

- Você deveria fazer assim:


se (n1 > maior) entao
maior <- n1
fimse
se (n2 > maior) entao
maior <- n2
fimse
se (n3 > maior) entao
maior <- n3
fimse

se (n1 = maior) entao
naomaior1 <- n2
naomaior2 <- n3
fimse

se (n2 = maior) entao
naomaior1 <- n1
naomaior2 <- n3
fimse

se (n3 = maior) entao
naomaior1 <- n1
naomaior2 <- n2
fimse


mp <- (maior * 4 + naomaior1 * 3 + naomaior2 * 3) / 10
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: Media aluno   Qua Out 31, 2007 6:36 pm

Olha agora esta certo

algoritmo "media aluno"
// Função : media ponderada
// Autor : Gustavo Rodrigues Torre
// Data : 28/10/07
// Seção de Declarações
var
n1,n2,n3 : real
maior,menor,mp,nmaior1,nmaior2,nmaior3, nmenor1, nmenor2, nmenor3 : real
c, co_a : inteiro
inicio
// Seção de Comandos
menor <- 10
maior <- 0
repita
escreva("Digite o código do aluno: ")
leia(co_a)

escreva("Digite as notas ")
leia (n1,n2,n3)

se (n1 > maior) entao
maior <- n1
fimse
se (n2 > maior) entao
maior <- n2
fimse
se (n3 > maior) entao
maior <- n3
fimse

se (n1 = maior) entao
nmaior1 <- n2
nmaior2 <- n3
fimse

se (n2 = maior) entao
nmaior1 <- n1
nmaior2 <- n3
fimse

se (n3 = maior) entao
nmaior1 <- n1
nmaior2 <- n2
fimse

mp <- (maior * 4 + nmaior1 * 3 + nmaior2 * 3) / 10

escreval
se (mp>=5) entao
escreval("Aluno aprovado")
senao
escreval("Aluno reprovado")
fimse

escreval("As notas foram",n1,",",n2,",",n3)
escreval("O código do aluno eh",co_a)
escreval("A media ponderada foi",mp)
ate (co_a<1)
fimalgoritmo

Estando certo pode fechar o tópico.
E vamos partir para os outros
E muito obrigado pela ajuda.
Estou aprendendo aos poucos algoritmos.
E este algoritmo eu achei meio complicado.
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: Media aluno   Qua Out 31, 2007 6:44 pm

Obrigado pela ajuda.
Deu certo.
Voltar ao Topo Ir em baixo
Ver perfil do usuário
Suporte
Administradores
Administradores
avatar

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

MensagemAssunto: Re: Media aluno   Qua Out 31, 2007 6:46 pm

Parece funcionar corretamente.

Mas por favor, não posso ficar o dia todo corrigindo o mesmo tópico.
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: Media aluno   Qua Out 31, 2007 6:47 pm

Problema resolvido, tópico trancado.
Voltar ao Topo Ir em baixo
Ver perfil do usuário http://visualgmaster.livreforum.com
Conteúdo patrocinado




MensagemAssunto: Re: Media aluno   

Voltar ao Topo Ir em baixo
 
Media aluno
Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo 
Página 1 de 1
 Tópicos similares
-
» Go Media Arsenal - Complete Photoshop Brush Sets 1-14
» Expandir o Game Maker com essa LIB de media player
» Colocar media player
» BBcode media
» Problema com o Media Player Classic

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: