Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
Gravecard

Vectores....

Recommended Posts

Gravecard

Bem tenho um vector de 50 posições preenchido com um determinado tipo de dados lá dentro, imaginem que sejam inteiros. O utilizador introduz um número que é procurado no vector, se for encontrado, o número é eliminado, ficando essa posição livre para receber outro número. Qual é a maneira mais eficaz de resolver esta situação, do apagar, mais propriamente.

Cumprimentos

Share this post


Link to post
Share on other sites
pmg

Não é possível fazer com um array de inteiros.

Se houver algum inteiro que nunca possa ser usado nesse array (por exemplo: -1) podes usar esse valor para sinalizar que essa posição está livre.

Outra solução é usares uma estrutura para o array: um membro da estrutura é o inteiro, outro membro é outro inteiro para sinalizar se essa posição está ocupada ou não.

Ainda outra solução é usares memória dinâmica, fazendo um array de 50 pointers. Para cada posição do array de pointer fazes um malloc e poes lá o interio. Quando o utilizador apagar um número, fazes o free dessa memória e metes o pointer a NULL.


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Share this post


Link to post
Share on other sites
Peterv5

Aqui está:

#include <stdio.h>

main()
{
      int x[50], i, y;
      
      for(i=0; i<50; i++)
               x[i] = i;/*Inicializa o vector, por acaso fiz desta maneira mas podias inicializar de uma outra maneira
               ou até mesmo não inicializar*/
               
      scanf("%d", &y);//Lê o valor que queres eliminar do vector
      
      for(i=0; i<50; i++)/*Vai á procura do valor e substitui por 0, não é póssivel apagar valore do vector de inteiros,
      ele tem de ter sempre alguma coisa*/
      {
               if(x[i] == y)
                       x[i] = 0;
      }
}

Parece-me que é isto que queres.

Share this post


Link to post
Share on other sites
TheDark

Dar o código completo é uma péssima maneira de ajudar. Dar pequenas ajudas de maneira a obrigar a ver onde cada peça encaixa é muito mais eficaz.


Desaparecido.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.