Ir ao conteúdo
  • Cadastre-se

Gustavo Yuushi

Membro Júnior
  • Posts

    1
  • Cadastrado em

  • Última visita

Reputação

2
  1. Foi me passado o seguinte desafio: Faça um programa em Pascal que efetue o cadastro de alunos para uma determinada disciplina letiva. Cada aluno terá 3 notas. As notas 1 e 3 possuem Peso 2 e a nota 2 possui Peso 1.O limite de alunos na disciplina é de até 50, não podendo ultrapassar esse valor. Os campos necessários são: Registro Alunos - RA : número - Nome : texto - Disciplina : texto - Nota1 : número - Nota2 : número - Nota3 : número - Situação: texto . O programa deve apresentar o seguinte MENU: 1 – Incluir Aluno 2 – Alterar Aluno 3 – Lista Aluno 4 – Sair Opcão 1 – Cadastrar novo aluno. Verificar se o RA digitado já existe no registro. Caso exista, não permita concluir o cadastro e mostre uma mensagem para o usuário. Peça para o usuário digitar cada uma das 3 notas do aluno, em escala de [0 – 10]. Valide a digitação de cada nota, não permitindo inserir notas inválidas. A média deve ser calculada (usando-se os pesos) automaticamente, mas não armazenada, para a inclusão da Situação do aluno (Aprovado, Em Exame, Reprovado), de acordo com a seguinte informações: se a média >=6.0 escreva aprovado. se a média > 2.0 e < 6.0 escrava Em Exame. se a média <= 2.0 escreva Reprovado. Cadastrar somente um aluno por vez e voltar ao menu inicial. Opção 2 – Solicitar o RA. Se o aluno não estiver cadastrado, mostre uma mensagem informando, caso contrário, mostre todos os dados do aluno, e depois peça para o usuário recadastrar (redigitar) os dados (exceto RA e a situação – gerada automaticamente). Opção 3 – Solicitar o RA. Se o aluno não estiver cadastrado, mostre uma mensagem informando que o mesmo não existe, caso contrário, mostre todos os dados daquele aluno. Opção 4 – Fechar o programa. Eu criei esse código e não consigo corrigir. program CadastroAlunos; const MAX_ALUNOS = 50; // limite máximo de alunos na disciplina PESO_NOTA1 = 2; // peso da nota1 (2) PESO_NOTA2 = 1; // peso da nota2 (1) PESO_NOTA3 = 2; // peso da nota3 (2) type Aluno = record // registro do aluno RA: integer; Nome: string; Disciplina: string; Nota1: real; Nota2: real; Nota3: real; Situacao: string; end; var Alunos: array[1..MAX_ALUNOS] of Aluno; // vetor de alunos numAlunos: integer = 0; // número atual de alunos cadastrados opcao: integer; // função para verificar se um RA já existe no registro de alunos function RAExiste(RA: integer): boolean; var i: integer; begin RAExiste := false; for i := 1 to numAlunos do begin if Alunos[i].RA = RA then begin RAExiste := true; break; end; end; end; // função para calcular a média das notas de um aluno com os pesos definidos function CalcularMedia(Nota1, Nota2, Nota3: real): real; begin Result := (Nota1 * PESO_NOTA1 + Nota2 * PESO_NOTA2 + Nota3 * PESO_NOTA3) / (PESO_NOTA1 + PESO_NOTA2 + PESO_NOTA3); end; // função para determinar a situação de um aluno a partir da média calculada function SituacaoAluno(Media: real): string; begin if Media >= 6.0 then Result := 'Aprovado' else if Media >= 4.0 then // corrigido o valor mínimo para aprovação Result := 'Em Exame' else Result := 'Reprovado'; end; // função para exibir os dados de um aluno procedure ExibirDadosAluno(const A: Aluno); begin writeln('RA: ', A.RA); writeln('Nome: ', A.Nome); writeln('Disciplina: ', A.Disciplina); writeln('Nota1: ', A.Nota1:0:1); writeln('Nota2: ', A.Nota2:0:1); writeln('Nota3: ', A.Nota3:0:1); writeln('Média: ', CalcularMedia(A.Nota1, A.Nota2, A.Nota3):0:1); writeln('Situação: ', A.Situacao); end; // função para obter um aluno a partir do RA function ObterAluno(RA: integer): Aluno; var i: integer; begin Result.RA := -1; // valor inválido como inicialização for i := 1 to numAlunos do begin if Alunos[i].RA = RA then begin Result := Alunos[i]; break; end; end; end; // procedimento para cadastrar um novo aluno procedure CadastrarAluno; var RA: integer; Nome: string; Disciplina: string; Nota1, Nota2, Nota3: real; Media: real; begin writeln('*** CADASTRO DE NOVO ALUNO ***'); writeln; // leitura dos dados do aluno write('RA: '); readln(RA); if RAExiste(RA) then // verifica se já existe um aluno com o mesmo RA begin writeln('Já existe um aluno cadastrado com este RA.'); writeln; exit; // sai do procedimento sem cadastrar o aluno end; write('Nome: '); readln(Nome); write('Disciplina: '); readln(Disciplina); write('Nota1: '); readln(Nota1); write('Nota2: '); readln(Nota2); write('Nota3: '); readln(Nota3); // calcula a média e a situação do aluno Media := CalcularMedia(Nota1, Nota2, Nota3); Alunos[numAlunos + 1].RA := RA; Alunos[numAlunos + 1].Nome := Nome; Alunos[numAlunos + 1].Disciplina := Disciplina; Alunos[numAlunos + 1].Nota1 := Nota1; Alunos[numAlunos + 1].Nota2 := Nota2; Alunos[numAlunos + 1].Nota3 := Nota3; Alunos[numAlunos + 1].Situacao := SituacaoAluno(Media); numAlunos := numAlunos + 1; // atualiza o número de alunos cadastrados writeln; writeln('Aluno cadastrado com sucesso!'); writeln; end; // procedimento para exibir os dados de um aluno procedure ExibirAluno; var RA: integer; A: Aluno; begin writeln('*** EXIBIÇÃO DE DADOS DO ALUNO ***'); writeln; write('RA: '); readln(RA); A := ObterAluno(RA); if A.RA = -1 then // verifica se o RA é inválido begin writeln('RA inválido. Nenhum aluno encontrado com este RA.'); writeln; exit; // sai do procedimento sem exibir os dados end; writeln; ExibirDadosAluno(A); writeln; end; // procedimento para exibir a lista de alunos cadastrados procedure ExibirLista; var i: integer; begin writeln('*** LISTA DE ALUNOS CADASTRADOS ***'); writeln; if numAlunos = 0 then // verifica se não há alunos cadastrados begin writeln('Nenhum aluno cadastrado.'); writeln; exit; // sai do procedimento sem exibir a lista end; for i := 1 to numAlunos do begin writeln('Aluno ', i, ':'); ExibirDadosAluno(Alunos[i]); writeln; end; end; // procedimento para encerrar o programa procedure EncerrarPrograma; begin writeln('Encerrando o programa...'); writeln; end; // procedimento para exibir o menu de opções e obter a escolha do usuário procedure ExibirMenu; begin writeln('*** MENU ***'); writeln('1 - Cadastrar novo aluno'); writeln('2 - Exibir dados de um aluno'); writeln('3 - Exibir lista de alunos cadastrados'); writeln('4 - Encerrar o programa'); writeln; write('Escolha uma opção (1-4): '); readln(opcao); writeln; end; // procedimento principal do programa begin repeat ExibirMenu; case opcao of 1: CadastrarAluno; 2: ExibirAluno; 3: ExibirLista; 4:EncerrarPrograma; else writeln('Opção inválida. Escolha uma opção válida (1-4).'); writeln; end; until opcao = 4; end. alguém me ajudar pfv

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!