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

Procedimentos com array - Pascal


Thiago André Cardoso

Pergunta

//fpc 3.0.0
//Thiago André Cardoso Silva
//Git Hub: https://github.com/doctorwho1998
program funcionario;
uses crt;
const
    COL = 2;
    LIN = 10;
var
    matricula_nome:array[0..(LIN - 1), 0..(COL - 1)] of String;
    salario:array[0..9] of Real;
    jornada:array[0..9] of integer;
    matricula:String;
    q_c,i,j,k,aux_alt,aux_exc,aux_mat:integer;
    cont_cad:boolean;

//-----Pesquisar funcionário-----

procedure pesquisar(mat:String);
begin
    for i := 0 to 9 do
    begin
       if mat =  matricula_nome[i,0] then
       begin
       writeln;
       writeln('Resultado da busca:');
       writeln('Matricula:    Nome:                  Salário:         Jornada:');
       write(matricula_nome[i][0],'          ');
       write(matricula_nome[i][1],'          ');
       write(salario[i]:00:02,'          ');
       write(jornada[i]);
       writeln;
       writeln;
       end;
    end;
end;

//-----Pesquisar funcionário-----

//-----Alterar funcionário-----

procedure alterar(mat:String; n:String; sal:real; jor:integer);
begin
    for i := 0 to 9 do
    begin
       if mat =  matricula_nome[i,0] then
       begin
            matricula_nome[i,1] := n;
            salario[i] := sal;
            jornada[i] := jor;
            aux_alt := aux_alt + 1;
            writeln('Funcionário alterado com sucesso!');
       end;
    end;
    writeln;
    if aux_alt = 0 then
    begin
     writeln('Matricula ',mat,' não encontrada');
     writeln;
    end;
end;

//-----Alterar funcionário-----

//-----Cadastrar-----
procedure cadastrar(mat:String; n:String; sal:real; jor:integer);
begin
    if q_c < 10 then
    begin
    
        for i := 0 to 9 do
        begin
            if mat = matricula_nome[i][0] then
            begin
                aux_mat := aux_mat + 1;
            end;
        end;
        
        if aux_mat = 0 then
        begin
            matricula_nome[q_c,0] := mat;
            matricula_nome[q_c,1] := n;
            salario[q_c] := sal;
            jornada[q_c] := jor;
            q_c := q_c + 1;
            writeln;
        end
        else
        begin
            writeln('Matricula ',mat,' já cadastrada');
        end;
    end
    else 
    begin
        writeln('Limite de cadastro atingido!');
        writeln;
    end;
end;
//-----Cadastrar-----

//-----Excluir-----

procedure excluir(mat:String);
begin
    for i := 0 to 9 do
    begin
        if mat =  matricula_nome[i,0] then
        begin
            for j := i to q_c do
            begin
                for k := 0 to COL - 1 do
                begin
                    matricula_nome[j][k] := matricula_nome[j+1][k];
                end;
                salario[j] := salario[j+1];
                jornada[j] := jornada[j+1];
            end;
        aux_exc := aux_exc + 1;
        end;
    end;
    if aux_exc = 0 then
    begin
        writeln('Matricula ',mat,' não encontrada');
    end
    else
    begin
       q_c := q_c - 1; 
    end; 
end;

//-----Excluir-----

//-----Listar-----
procedure listar;
begin
    writeln('Matricula:    Nome:                  Salário:         Jornada:');
    for i := 0 to q_c - 1 do // for para listar matricula e nome
    begin
        for j := 0 to COL - 1 do
        begin
            write(matricula_nome[i][j],'          ');
        end;
        write(salario[i]:00:02,'          ');
        write(jornada[i]);
        writeln;
        
    end;
end;
//-----Listar-----

//---------------------------------------------INÍCIO---------------------------------------------
begin
    {
    writeln('Digite a matricula do funcionário');
    writeln('Digite o nome do funcionário');
    writeln('Digite o salário');
    writeln('Digite a jornada de trabalho');
    }
    cadastrar('1010', 'José Sobrinho', 5500, 40);
    cadastrar('1011', 'Jovem Célio  ', 2500, 40);
    cadastrar('1011', 'Jovem Thiago ', 2500, 40);
    listar;
    pesquisar('1011');
    alterar('1011', 'Jovem Cesar  ', 2499, 80);
    listar;
    excluir('1011');
    listar;
end.

 

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,3k
    • Posts
      652,5k
×
×
  • Criar Novo...