Ir ao conteúdo
  • Cadastre-se

Bella Lima

Membro Júnior
  • Posts

    1
  • Cadastrado em

  • Última visita

Reputação

0
  1. Olá. Estou tentando fazer esse exercício Este sistema deverá armazenar o nome, idade e as notas de uma turma com 45 alunos. Cada aluno irá fazer 3 avaliações. A média final do aluno será composta 20% da primeira prova, 30% da segunda e 50% da terceira. Ao final, os alunos devem ser ordenados pelas suas notas finais. Em caso de empate, o aluno com maior nota na terceira prova deve ficar melhor colocado. Se o empate persistir, o aluno com menor idade deve ficar melhor colocado e, por fim, caso aconteça novo empate, os alunos devem ser ordenados por alfabeticamente. eu sei que o vetor tem q ser tamanho 45, coloquei de 1 a 2 para poder ver se estava funcionando*** No momento meu código esta assim: program Avalia_Alunos; {***Registra e Avalia os alunos***} uses CRT; Type Dado_do_Aluno = record nome: string; idade: integer; media: real; notas: array[1..3] of real; {***Cria um vetor para que possa armazenar as três notas do aluno***} end; Var Alunos: array[1..2] of Dado_do_Aluno; troca:Dado_do_Aluno; i,j,imenor: integer; nota1,nota2,nota3: real; begin for i := 1 to 2 do begin j:=0; {***Inicializa a variavel nota***} writeln('Digite o nome do Aluno:'); readln(Alunos[i].nome); writeln('Digite a idade do Aluno:'); readln(Alunos[i].idade); writeln('Digite as notas do Aluno:'); writeln('Digite a 1ª nota:'); readln(Alunos[i].notas[j]); Alunos[i].notas[j]:= 0.2*Alunos[i].notas[j]; nota1:= Alunos[i].notas[j]; j:= j+ 1; {***Incrementa a variavel nota, para que o proximo valor a ser adicionado seja a segunda nota***} writeln('Digite a 2ª nota:'); readln(Alunos[i].notas[j]); Alunos[i].notas[j]:= 0.3*Alunos[i].notas[j]; nota2:= Alunos[i].notas[j]; j:= j + 1; {***Incrementa a variavel nota, para que o proximo valor a ser adicionado seja a terceira nota***} writeln('Digite a 3ª nota:'); readln(Alunos[i].notas[j]); Alunos[i].notas[j]:= 0.5*Alunos[i].notas[j]; nota3:= Alunos[i].notas[j] ; Alunos[i].media:= nota1 + nota2 + nota3; end; writeln('As notas dos 45 alunos foram cadastradas!'); for i:=1 to 2 do Begin imenor:=i; for j:=i+1 to 2 do {*** Ciclo para comparar o valor no índice i com os restantes números dos índices superiores***} {***Ordenando as notas dos alunos pela média***} Begin if Alunos[i].media > Alunos[imenor].media then imenor:=j; {***Se ver que o valor contido no índice j é maior do que o valor do índice definido com o imenor, muda***} if Alunos[i].media <> Alunos[imenor].media then {*** Se realmente forem diferentes muda***} Begin troca:= Alunos[i]; Alunos[i]:= Alunos[imenor] ; Alunos[imenor]:= troca; end; end; {***Ordenando as notas dos alunos pela terceira nota***} Begin if Alunos[i].notas[3] > Alunos[imenor].notas[3] then imenor:=j; {***Se ver que o valor contido no índice j é igual ao valor do índice definido com o imenor, muda***} if Alunos[i].media = Alunos[imenor].media then {*** Se realmente as medias forem iguais muda***} Begin troca:= Alunos[i]; Alunos[i]:= Alunos[imenor] ; Alunos[imenor]:= troca; end; end; {***Ordenando as notas dos alunos pela idade***} Begin if Alunos[i].idade > Alunos[imenor].idade then imenor:=j; {***Se ver que o valor contido no índice j é igual ao valor do índice definido com o imenor, muda***} if Alunos[i].notas[3] = Alunos[imenor].notas[3] then {*** Se realmente a terceira nota forem iguais, muda***} Begin troca:= Alunos[i]; Alunos[i]:= Alunos[imenor] ; Alunos[imenor]:= troca; end; end; {***Ordenando as notas dos alunos pela ordem alfabética***} Begin if Alunos[i].nome > Alunos[imenor].nome then imenor:=j; {***Se ver que o valor contido no índice j é igual ao valor do índice definido com o imenor, muda***} if Alunos[i].idade = Alunos[imenor].idade then {*** Se realmente a idade forem iguais, muda***} Begin troca:= Alunos[i]; Alunos[i]:= Alunos[imenor] ; Alunos[imenor]:= troca; end; end; {***Imprimindo os valores ordenados***} writeln('Valores Ordenados'); for i:=1 to 2 do Begin writeln ( Alunos[i].nome ); end; end; readkey; end. Não estou conseguindo ver onde estou errando

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