Ir para conteúdo
Fórum Script Brasil
  • 0

Preciso de ajudar para corrigir uma programa ou criar um novo


Gustavo Yuushi

Pergunta

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 😞

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652,1k
×
×
  • Criar Novo...