Jump to content
Fórum Script Brasil
  • 0

Preciso de ajudar para corrigir uma programa ou criar um novo


Gustavo Yuushi

Question

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 to comment
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.1k
    • Total Posts
      651.9k
×
×
  • Create New...