Ir ao conteúdo

VisualG Algoritmo para saber se o aluno está reprovado, de prova final ou aprovado


Ir à solução Resolvido por Noob752,

Posts recomendados

  • Solução
Postado

Entao, fiz esse algoritmo que atraves da media diz se voce esta de recuperaçao, de prova final ou aprovado, e caso voce esteja reprovado ou de prova final, ele tambem informa quantos pontos voce precisa para passar. O problema é que quando a media da que estou de recuperaçao, aparece a mensagem e os pontos que preciso, so que tambem aparece a mnsgm da prova final, que nao era pra aparecer.

 

Informe a sua primeira nota:
3
Informe a sua segunda nota:3
Informe a sua terceira nota:3
Média: 3
O aluno está em recuperação e precisa de 9 pontos para passar O aluno está em prova final e precisa de 7 pontos para passar
>>> Fim da execução do programa !


 

Var
   // Seção de Declarações das variáveis 

   n1, n2, n3, media:real
   recuperacao, provafinal: real

Inicio
   // Seção de Comandos, procedimento, funções, operadores, etc... 
   escreva("Informe a sua primeira nota:")
   leia(n1)
   escreva("Informe a sua segunda nota:")
   leia(n2)
   escreva("Informe a sua terceira nota:")
   leia(n3)
   media<- (n1+n2+n3)/3
   escreval ("Média:",media)
   recuperacao<- 10-media+2
   provafinal<- 10-media
   se media<=4.9 entao
      escreva("O aluno está em recuperação e precisa de",recuperacao," pontos para passar")
   fimse
   se media<=6.9 entao
      escreva("O aluno está em prova final e precisa de",provafinal," pontos para passar")
   fimse
   se media>=7 entao
      escreva("O aluno está aprovado")
   fimse
Fimalgoritmo

 

  • Membro VIP
Postado

@Noob752, vamos lá:

 

Primeiramente, por que não está utilizando acentuação na sua postagem aqui no Fórum? Tirando algum problema técnico, seria também importante seguir a "sintaxe" do Português... :)

 

Sobre:

21 horas atrás, Noob752 disse:

O problema é que quando a media da que estou de recuperaçao, aparece a mensagem e os pontos que preciso, so que tambem aparece a mnsgm da prova final, que nao era pra aparecer.

 

O problema é que você não está filtrando a faixa corretamente.

21 horas atrás, Noob752 disse:


   se media<=4.9 entao
      escreva("O aluno está em recuperação e precisa de",recuperacao," pontos para passar")
   fimse
   se media<=6.9 entao
      escreva("O aluno está em prova final e precisa de",provafinal," pontos para passar")
   fimse
   se media>=7 entao
      escreva("O aluno está aprovado")
   fimse

 

 

Ali no segundo se, você está apenas verificando se é menor ou igual a 6,9... E o 3, que você usou no teste, satisfaz essa condição.. Entenda que são 3 verificações distintas e isoladas... um se não tem nada a ver com o outro... ou seja: são 3 verificações independentes.

 

Tem duas formas para contornar:

 

1) Inserindo a faixa na expressão do segundo se:

   se media < 5 entao
      recuperacao <- 10-media+2
      escreva ("O aluno está em recuperação e precisa de ", recuperacao:1:2, " pontos para passar")
   fimSe
   
   se (media >= 5) E (media < 7) entao
      provafinal <- 10-media
      escreva ("O aluno está em prova final e precisa de ", provafinal:1:2, " pontos para passar")
   fimSe
   
   se media >=7 entao
      escreva ("O aluno está aprovado")
   fimSe

 

Obs.: esse espaçamento entre os se seria apenas estético... para deixar caro que são 3 verificações distintas... um não sabe da existência do outros... vão simplesmente ser verificadas em ordem...

 

2) Utilizando a estrutura se/senao

   se media < 5 entao
      recuperacao <- 10-media+2
      escreva ("O aluno está em recuperação e precisa de ",recuperacao:1:2, " pontos para passar")
   senao
      se media < 7 entao
         provafinal <- 10-media
         escreva ("O aluno está em prova final e precisa de ", provafinal:1:2, " pontos para passar")
      senao
         escreva ("O aluno está aprovado")
      fimSe
   fimSe

 

Aqui sim existe uma "amarração" entre as condições... se, por exemplo, a primeira condição for satisfeita, as restantes não serão verificadas.

 

Obs.: mais um vez "deixar sem espaços" entre as condições não tem nada a ver... o que "amarra" um se com o outro é o senao

 

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...