Ir ao conteúdo
  • Cadastre-se

VisualG Utilizar vetores ou registros


Posts recomendados

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

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
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
Link para o comentário
Compartilhar em outros sites

@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
Link para o comentário
Compartilhar em outros sites

  • Membro VIP
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
Link para o comentário
Compartilhar em outros sites

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!