Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Leonardo_Silva

Possível correção de Registros

Recommended Posts

Olá pessoal tudo em paz? http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

Então para finalizar a materia de registros onde tive grande dificuldades por não ter como testar.

 

Estou querendo uma força, para verificar onde não tive de certeza de estar correto:

 

Principalmente na parte da busca binaria e ordenação.

 

Considerando a necessidade de um programa que armazene o nome e as notas bimestrais de 20 alunos
do curso de Técnicas de Programação, defina a estrutura de registro apropriada e a codificação de um
programa que, por meio do uso de um menu de opções, execute as seguintes etapas:

a) Cadastrar os 20 registros (após o cadastro efetuar a classificação por nome).

B) Pesquisar os 20 registros, de cada vez, pelo campo nome (usar o método binário, nesta
pesquisa o programa deverá também apresentar a média do aluno e as mensagens:
“Aprovado” caso sua média seja maior ou igual a 5, ou “Reprovado” para média abaixo de 5).

c) Apresentar todos os registros, médias e a mensagem de aprovação ou reprovação.

d) Sair do programa de cadastro.

 

algoritmo "AlunoCurso"
tipo
  bimestre = vetor[1..4] de real
  rCurso = registro
             nome : caracter
             nota : bimestre
             media : real
             msg : caracter
           fimregistro
var
  curso : vetor[1..20] de rCurso
  aux : rCurso
  t, h, comeco, meio, final : inteiro
  pesqNome: caracter
  sMedia : real
  acha : logico

inicio

  para t de 1 ate 20 faca
    escreva("Nome: ");  leia(curso[t].nome)
    para h de 1 ate 4 faca
      escreva("Digite as notas: ");  leia(curso[t].nota[h])
    fimpara
  fimpara

  para t de 1 ate 19 faca
    para h de t + 1 ate 20 faca
    se (curso[t].nome > curso[h].nome) entao
      aux <- curso[t]
      curso[t] <- curso[h]
      curso[h] <- aux
    fimse
    fimpara
  fimpara

  escreva("O que procura? ")
  leia(pesqNome)
  comeco <- 1
  final <- 20
  acha <- falso

  enquanto (comeco <= final) e (acha = falso) faca
    meio <- (comeco + final) div 2
    se (pesqNome = curso[meio].nome) entao
      acha <- verdadeiro
    senao
      se (pesqNome < curso[meio].nome) entao
        final <- meio - 1
      senao
        comeco <- meio + 1
      fimse
    fimse
  fimenquanto

  sMedia <- 0
  para t de 1 ate 20 faca
    para h de 1 ate 4 faca
    sMedia <- sMedia + curso[t].nota[h]
    fimpara
    curso[t].media <- sMedia / 4
    sMedia <- 0
  fimpara

  para t de 1 ate 20 faca
    se (curso[t].media >= 5) entao
      curso[t].msg <- "Aprovado"
    senao
      curso[t].msg <- "Reprovado"
    fimse
  fimpara

  se (acha = verdadeiro) entao
    escreva("Nome: ", curso[meio].nome)
    escreva("Media: ", curso[meio].media)
    escreva("Foi ", curso[meio].msg)
  senao
    escreva("Nada encontrado")
  fimse

  para t de 1 ate 20 faca
    escreva(curso[t].nome)
    escreva(curso[t].media)
    escreva(curso[t].msg)
  fimpara
fimalgoritmo

Se tiver uma maneira melhor de fazer e ate uma lógica bem melhor, só da um toque ! http://forum.imasters.com.br/public/style_emoticons/default/blush.gif

 

Obrigadão pela força ! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nunca programei em Visualg, por isso fica dificil eu saber se tem comandos prontos e tal..

você usou:

curso[t].nome > curso[h].nome
Isso até pode dar certo, + n creio que dará certo para todos os casos, verificar a grandeza de um nome não signifca descobrir se ele é maior que outro; bom se esta rodando e classificando os nomes beleza, + isso em um programa em C, com ctz não daria certo, + como disse na linguagem C temos funções predefinidas para isso.

Acho que o melhor é você primeiro cadastrar os 20 registros e depois você os classifica;

E outra você já saber trabalhar com modularização?? isso deixaria seu código umas 21321x + claro ;D

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ae Quit.

 

Não entendi bem, pq a verificação não daria certo.

 

Cadastrei 20 registros com 3 campos e apartir do campo nome que sera ordenado.

 

No prox. capitulo que irei aprender procedimentos e funções *ansioso* :P

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então é assim eu digo isso pq sei q se fosse em C/C++ isso não funcionario para ordenar, + como disse se no visualg faz beleza ;D

você tentou entradas como:

xxxxx

asdfas

x

a

oprere

oarere

 

ele ordena certinho?

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei te dizer ao certo o pq mano.

+ digo isso pq qnd eu fazia uns algoritmos do spoj, que é um site de desafios, já me deparei com ordenação de nomes e tive q buscar uma função especifica para isso.

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.