Fala galera! Estou com um problema, como faço para apagar dados de um vetor em pascal?Tipo eu tenho um procedimento que cadastra e altera como faço para excluir? Eu já pesquisei na internet mas não encontrei nada que me ajuda-se. Alguem se possivel pode me ajudar?
Em pascal, arrays normais (aqueles que você declara com “nomedavariavel: array[minimo…maximo] of tipo”) não são objetos dinamicamente alocados e portanto o gerenciamento da inclusão e exclusão precisa ser controlado pelo programa. Não há inclusão e exclusão real, apenas preenchimento de índices já existentes.
Sem aumentar muito a complexidade, um jeito de obter isso é definir um valor que significa “vazio” ou “disponível” no seu vetor, e iniciar todas as posições do vetor com esse valor. Por exemplo, num array de inteiros positivos, você pode definir que um valor padrão equivale à uma posição vazia, e usar isso em sua lógica. Algo como:
numeros: array[1..10] of integer;
i : integer; // declarei aqui pra facilitar, mas o ideal é que fique dentro de cada método/procedure
valorPadrao: integer; // valor a ser usado como valor equivalente à vazio
procedure incluir(numero: integer); begin
for i := 1 to 10 do
if (numeros[i] = valorPadrao)begin
numeros[i] := numero;
break; // sai do loop for
end;
end;
end;
procedure remover(posicao : integer): begin
if (posicao >= 1 and posicao <= 10) then
numeros[posicao] := valorPadrao;
end;
end;
procedure inicializarArray(novoValorPadrao : integer): begin
for i := 1 to 10 do
numeros[i] := novoValorPadrao;
end;
valorPadrao := novoValorPadrao;
end;
begin
inicializarArray(-1); // define que o valor equivalente à vazio será o -1;
inserir(101);
inserir(99);
inserir(80);
remover(1); // remove da posição um, não o registro que tem valor 1
end.
Obviamente, esse código não serve se você precisa de armazenar um número igual ao valor padrão. Ou seja, para cada situação, você terá de ajustar seus códigos de acordo.
Note também que este algoritmo deixa buracos no array depois de cada remoção. Para evitar isso, ao remover, seria necessário mover os elementos posteriores para as posições adjacentes. Não fiz isso para simplificar.
Por fim, para outros tipos de dados (como Strings e record s), você precisa de outras estratégias. Para strings você pode usar uma string vazia como registro disponível, enquanto que para records você pode adicionar um atributo boolean que diz se aquela posição está vazia ou não, e inserir e remover de acordo.
PS: evite duplicar seus tópicos: Excluir Dados de um array em pascal
Abraço.