Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Caio dos santos pimentel

Buscar e Atualizar dentro de uma lista em Pascal

Recommended Posts

Amigos, boa tarde!

 

Eu estou precisando de uma ajuda de vocês com o codigo abaixo, eu estou desenvolvendo

uma estrutura da dados, e dentro do menu tem as seguintes opções.

1 - Inserir um Aluno

2 - Busca um Aluno pelo Cpf

3 - Busca um Aluno por Periodo

4 - Atualiza o Periodo do Aluno

5 - Apaga um Aluno

9 - Sair

 

o meu problema é que até agora eu só consegui resolver apenas o INSERIR, APAGAR UM ALUNO.

eu tenho até amanha para entregar este código, por gentileza, quem puder me ajudar eu agradeco.

Program Cadastro_Alunos;

const 
 inicia = 1;
 Tam_Max = 50;
 
Type  
     Apontador = integer;   // Apontar
     Tipo_Aluno = record    // Registra os Dados dos Alunos
                  Nome: string [10];
                  Cpf: real;
                  Periodo: integer;
                 end;
		 Lista_Alunos = record      
		                 Aluno: array [1..Tam_Max] of Tipo_Aluno; // Lista de Alunos
										 Inicio:Apontador;     // Apontar para Inicio
										 Fim:Apontador;        // Apontar para o Fim
										end; 
																				
	procedure FLvazia (var Lista:Lista_Alunos);   // Fila da Lista Vazia
	     begin
	      Lista.Inicio:= inicia;
	      Lista.Fim:= Lista.Inicio;
	     end;
	  
	 function Vazia (var Lista:Lista_Alunos):boolean;  // Vazia
	    begin
	      Vazia:= Lista.Inicio= Lista.Fim; 
	    end;
	procedure Insere (x:Tipo_Aluno; var Lista:Lista_Alunos);  // Inserir
	begin
	  if Lista.Fim >  Tam_Max  then
	  writeln ('Lista esta Cheia')
	  else
	 begin
	  Lista.Aluno[Lista.Fim]:= x;   
	  Lista.Fim:= Lista.Fim + 1;
	 end;
	end; 
	
	procedure Insere_menu(var Lista:Lista_Alunos);
   var estudante:Tipo_Aluno;   
     begin    
       writeln('Digite o nome do aluno:');
       readln(estudante.nome);
       writeln('Digite o Cpf do aluno:');
       readln(estudante.Cpf);
       writeln('Digite o Periodo do aluno:');
       readln(estudante.Periodo);
       Insere(estudante,Lista)
		end;
	                         // Retira
	procedure Retira (p:Apontador; var Lista:Lista_Alunos; var Aluno:Tipo_Aluno);
	var Aux:integer;
	 begin
	  if Vazia(Lista) or (p >= Lista.Fim) then
		writeln ('Erro: posicao nao Existe')
		else
		begin
		Aluno:=Lista.Aluno[p];
		Lista.Fim:= Lista.Fim-1; 
		for Aux:= p to Lista.Fim-1 do 
		Lista.Aluno[Aux]:= Lista.Aluno[Aux+1]
		end;
	 end;
	 
	 		                        // Imprimir
	 	procedure Imprime (var Lista:Lista_Alunos);
	var Aux : integer;
	 begin
	  for Aux := Lista.inicio to Lista.Fim-1 do
		begin
		 writeln ('Aluno:',Lista.Aluno[Aux].Nome	);
		 writeln ('Cpf:',Lista.Aluno[Aux].Cpf	);
		 writeln ('Periodo:',Lista.Aluno[Aux].Periodo	);
		 write('  ');
		end;
		 writeln('  ');
	 end;
	         //Procedimento q está dando erro
function busca_simples (num:integer; Lista:Lista_Alunos; Tam_Max:integer): integer;
var i: integer;

begin
	  for i := 1 to Tam_Max do
	    if (Lista[i] = i) then  busca_simples:=i;
	  i:=i+1;
end;   
	 	 
var
	  listaInt:Lista_Alunos;
		temp: Tipo_Aluno;
		aux, Opcao, num: integer;
		
    
Begin
                      // Menu
Opcao:=0;
FLvazia(listaInt);
Imprime(listaInt);

while (Opcao<>9) do
 begin
  
	  clrscr;
		writeln ('Seja Bem Vindo!!!');
		writeln ('  ');
    
    writeln ('Escolha umas das OPCOES:');
    writeln ('  ');
    
    writeln ('1 - Inserir um Aluno:');
    writeln ('2 - Busca um Aluno pelo Cpf:');
    writeln ('3 - Busca um Aluno por Periodo:');
    writeln ('4 - Atualiza o Periodo do Aluno:');
    writeln ('5 - Apaga um Aluno:');
    writeln ('9 - Sair:');
    read (Opcao);    	                             
	 
	            // Inserir um Aluno
               
  if (Opcao=1) then
  begin
  Insere_menu(listaInt);
  end;
  if (Opcao=2) then
  begin
   writeln ();
   Write ('Digite o Numero do Cpf que deseja Busca:');
   readln (num);
   write ('O Numero', num , 'Esta na Posicao:', busca(num, listaInt,Tam_Max));
  end;
	if (Opcao=3) then
  begin
   writeln ();
   Write ('Digite o Periodo que deseja Busca:');
   readln (num);
   write ('O Numero', num , 'Esta na Posicao:', busca(num, listaInt,Tam_Max));
  end; 
	if (Opcao=4) then
  begin 
	
	end; }
		if (Opcao=5) then
  begin 
  Write ('Digite o Aluno que deseja Excluir:');
  readln (temp.Nome);
  Retira (2, listaInt,temp);	
	end;  
	Imprime(listaInt); 
 end;
    
End.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.