Ir ao conteúdo
  • Cadastre-se
diogo moura

C Remover elemento de um vetor

Recommended Posts

A maneira que eu pensei foi se achar o número ele substituído por um número negativo, mas queria remover o elemento totalmente do vetor

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv)
{
  int vetor[] = {1, 2, 3, 4, 5}, i;
  int remove_num = 5;
  int tam = 5;
  for(i = 0; i < tam; i++)
  {
    if(vetor[i] == remove_num)
    {
        vetor[i] = -1;
    }
 }
 for(i = 0; i < tam; i++)
 {
    if(vetor[i] >= 0)
    {
        printf("%d\n", vetor[i]);
    }
 }
   return 0;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
11 minutos atrás, diogo moura disse:

A maneira que eu pensei foi se achar o número ele substituído por um número negativo, mas queria remover o elemento totalmente do vetor

 

Ao fazer:

11 minutos atrás, diogo moura disse:

vetor[i] = -1;

 

Está "removendo" o conteúdo... ou seja, está substituindo por outro valor, que para seu contexto significaria "excluído". Na hora de utilizar o vetor, verificar o conteúdo, se tiver um "-1" está excluído... não usa... ignora... na hora de cadastrar um novo, usará um que ainda não foi utilizado ou que tem -1... sacou?

 

Em fim, como está utilizando um vetor estático, a exclusão será lógica... no seu código, está substituindo pro outro valor, que significa que foi excluído... não dá (ou não é viável) "remover" a posição... ela apenas passa a ficar "marcada como excluída"! É assim que o HD do computador funciona...   experimente copiar um vídeo do pendrive para o HD. Agora, apague esse arquivo do HD, verás que a exclusão é praticamente instantânea, pois é apenas "marcado como excluído"... o computador não precisa perder tempo reescrevendo os bits, pois é muito custoso.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como o @Simon Viegas já indicou o tamanho do vetor é definido e fixado no momento em que ele é criado, então não dá para excluir uma posição dele.

 

O máximo que poderia fazer é mudar as posições dos elementos subsequentes ao número que deseja-se excluir, movendo-os em 1 casa e deixando uma casa que chamaríamos de "vazia" no fim do vetor, aí se o vetor tem n posições, após a "exclusão" faríamos o algoritmo acessar apenas as n-1 primeiras posições do vetor, ignorando a última posição como se ela não existisse.

 

Por exemplo:

 

vetor = { 1, 2, 3, 4, 5 }

 

para excluir 3 do vetor copiamos os número depois deles, 4 e 5, para movê-los para as respectivas posições anteriores.

 

vetor = { 1, 2, 4, 5, X }

 

e passamos a considerar e usar apenas as 4 primeiras posições do vetor, ignorando a última posição como se não existisse (logo coloquei um X pois não importa o valor dela, seja ele 0, -1, 5, ou qualquer outro número não faz diferença).

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×