Ir ao conteúdo

Posts recomendados

Postado

O código abaixo usa dois vetores para armazenar duas notas de quatro alunos, outro para o nome dos quatro alunos e outro para a média da turma. Fazer essa questão usando registro não seria mais adequado? Por quê utilizar vetor ao invés de registro? 

 

Algoritmo "AnáliseDasNotasDaTurma"

Var
   nome : vetor [1..4] de caractere
   nota1 : vetor [1..4] de real
   nota2 : vetor[1..4] de real
   mediaAluno : vetor [1..4] de real
   contador : inteiro
   somaMedia, mediaTurma : real
   alunosAcimaDaMediaDaTurma : inteiro


Inicio

   para contador <- 1 ate 4 faca
      escreval ("Informe o nome do ", contador:1, "º aluno")
      leia(nome[contador])
      escreval (" Informe a 1º nota")
      leia(nota1[contador])
      escreval (" Informe a 2º nota")
      leia(nota2[contador])
      mediaAluno[contador] <- (nota1[contador]+nota2[contador])/2
      somaMedia <- somaMedia+mediaAluno[contador]
   fimPara
   mediaTurma <- somaMedia/4
   limpatela
   escreval("Listagem de alunos :")
   para contador <- 1 ate 4 faca
      escreval (nome[contador]:15, mediaAluno[contador])
      se mediaAluno[contador]> mediaTurma então
         alunosAcimaDaMediaDaTurma <- alunosAcimaDaMediaDaTurma+1
      fimSe
   fimPara
   escreval ("Ao todo temos ", alunosAcimaDaMediaDaTurma:1, " aluno(s) que está acima da média da turma, que é ", mediaTurma:4:2, ".")


FimAlgoritmo

 

  • Membro VIP
Postado
19 horas atrás, Eli Almeidaa disse:

Fazer essa questão usando registro não seria mais adequado?

 

Depende. Deixaria mais organizado... Se onde o exercício foi proposto já estudou registros, sim. Se for um exercício onde está estudando registro, tem a obrigação de usar... Caso contrário, não... ou crie duas versões diferentes.

 

 

19 horas atrás, Eli Almeidaa disse:

Por quê utilizar vetor ao invés de registro? 

 

Uma coisa não substitui a outra, pelo contrário, geralmente são utilizadas em conjunto. Dê uma pesquisada sobre registros no VisualG e se aprofunde no tema. Após, aplique o que aprendeu (e vai aprendendo).

 

 

Sobre o código atual usando apenas vetores... para mim está muito bom. Só inseria o registro.

 

 

 

 

 

Adendo 1:

Segue código modificado utilizando dois novos* conceitos: valores aleatórios e listas. (O segundo está relacionado ao primeiro.)

 

algoritmo "Análise Das Notas Da Turma v0.2_auto"
var
   nome : vetor [1..4] de caractere
   nota1 : vetor [1..4] de real
   nota2 : vetor[1..4] de real
   mediaAluno : vetor [1..4] de real
   contador : inteiro
   somaMedia, mediaTurma : real
   qtdAlunosAcimaDaMediaDaTurma : inteiro

procedimento espera (pularLinha:logico)
//veja a magia da organização de códigos. Basicamente copiei esse código de
//outro tópico aqui do fórum
//...apenas inseri essa opção de pular a linha, ou seja, já criando uma nova
//versão alternativa para esse recurso
var
   entrada:caractere
inicio
   escreva ("Pressione enter para continuar...")

   se (pularLinha) então
      escrevaL("")
   fimSe

   leia(entrada)
fimProcedimento

inicio
   somaMedia <- 0
   
   para contador <- 1 ate 4 faca
      escrevaL("Informe os dados do ", contador:1, "º aluno")
      ALEATORIO ON
      LISTA "NOMES DE PESSOAS
      escreva ("   Nome : ")
      leia(nome[contador])
      escreva (" 1º nota: ")
      ALEATORIO 0,10
      leia(nota1[contador])
      escreva (" 2º nota: ")
      leia(nota2[contador])
      ALEATORIO OFF
      mediaAluno[contador] <- (nota1[contador]+nota2[contador])/2
      somaMedia <- somaMedia+mediaAluno[contador]
      escrevaL("")
   fimPara
   mediaTurma <- somaMedia/4
   espera(FALSO)

   limpaTela()
   escrevaL("Listagem de alunos :")
   escrevaL("Nome":16, "Nota")
   escrevaL("--------------------")
   qtdAlunosAcimaDaMediaDaTurma <- 0
   
   para contador <- 1 ate 4 faca
      escrevaL(nome[contador]:15, "|", mediaAluno[contador]:5:2)

      se (mediaAluno[contador] > mediaTurma) então
         qtdAlunosAcimaDaMediaDaTurma <- qtdAlunosAcimaDaMediaDaTurma+1
      fimSe
   fimPara

   escrevaL("")
   escrevaL("Ao todo temos ", qtdAlunosAcimaDaMediaDaTurma:1, " aluno(s) que está(ão) acima da média da turma, que é ", mediaTurma:4:2, ".")
fimAlgoritmo

 

Telas:

image.png

 

image.png

 

 

Adendo 2: não, não nos pergunte como configurar as listas. PESQUISE!!!

 

No aguardo. 

  • Obrigado 1
Postado

@Simon Viegas , dei uma pesquisada e descobrir que pode criar uma lista indo em configurações dentro do visualg, fiz isso, criei a lista com o mesmo nome que você já tinha colocado no código, no caso NOMES DE PESSOAS. Lá dentro da lista coloquei os nomes : Gabriel, Miguel Arthur e João, um em baixo do outro. Porém existe um problema que não sei como solucionar, no caso, quando executa o código e o programa escolhe os nomes aleatoriamente, ele acaba escolhendo nomes repetidos, como nesse caso, ele repetiu Gabriel duas vezes.

 

Código completo
 

algoritmo "Análise Das Notas Da Turma v0.2_auto"
var
   nome : vetor [1..4] de caractere
   nota1 : vetor [1..4] de real
   nota2 : vetor[1..4] de real
   mediaAluno : vetor [1..4] de real
   contador : inteiro
   somaMedia, mediaTurma : real
   qtdAlunosAcimaDaMediaDaTurma : inteiro

procedimento espera (pularLinha:logico)
//veja a magia da organização de códigos. Basicamente copiei esse código de
//outro tópico aqui do fórum
//...apenas inseri essa opção de pular a linha, ou seja, já criando uma nova
//versão alternativa para esse recurso
var
   entrada:caractere
inicio
   escreva ("Pressione enter para continuar...")

   se (pularLinha) então
      escrevaL("")
   fimSe

   leia(entrada)
fimProcedimento

inicio
   somaMedia <- 0

   para contador <- 1 ate 4 faca
      escrevaL("Informe os dados do ", contador:1, "º aluno")
      ALEATORIO ON
      LISTA "NOMES DE PESSOAS"
      escreva ("   Nome : ")
      leia(nome[contador])
      escreva (" 1º nota: ")
      ALEATORIO 0,10
      leia(nota1[contador])
      escreva (" 2º nota: ")
      leia(nota2[contador])
      ALEATORIO OFF
      mediaAluno[contador] <- (nota1[contador]+nota2[contador])/2
      somaMedia <- somaMedia+mediaAluno[contador]
      escrevaL("")
   fimPara
   mediaTurma <- somaMedia/4
   espera(FALSO)

   limpaTela()
   escrevaL("Listagem de alunos :")
   escrevaL("Nome":16, "Nota")
   escrevaL("--------------------")
   qtdAlunosAcimaDaMediaDaTurma <- 0

   para contador <- 1 ate 4 faca
      escrevaL(nome[contador]:15, "|", mediaAluno[contador]:5:2)

      se (mediaAluno[contador] > mediaTurma) então
         qtdAlunosAcimaDaMediaDaTurma <- qtdAlunosAcimaDaMediaDaTurma+1
      fimSe
   fimPara

   escrevaL("")
   escrevaL("Ao todo temos ", qtdAlunosAcimaDaMediaDaTurma:1, " aluno(s) que está(ão) acima da média da turma, que é ", mediaTurma:4:2, ".")
fimAlgoritmo

 

 

 

Captura de tela 2023-11-21 150004.jpg

  • Curtir 1
  • Membro VIP
Postado
22 horas atrás, Eli Almeida disse:

Porém existe um problema que não sei como solucionar, no caso, quando executa o código e o programa escolhe os nomes aleatoriamente, ele acaba escolhendo nomes repetidos, como nesse caso, ele repetiu Gabriel duas vezes.

 

É normal. Os nomes são sorteados. Como existiam poucas opções, as chances de repetir são maiores. Uma alternativa seria cadastrar mais nomes. Obs.: o algoritmo de sorteio no VisualG não é bom de qualquer forma, mas não precisa se apegar a esse detalhe (de repetições).  

 

A ideia central seria ter contato com o recurso. Pode ser útil para facilitar testes, por exemplo... Muito mais prático que ficar digitando valores cada vez.

 

 

  • Obrigado 1

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!