Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
Carregando comentários...