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

Sign in to follow this  
Followers 0
Joao brandao

Duvida na existencia de uma função

16 posts in this topic

Ola pessoal, sabem se existe uma funçao que apague a posiçao de um vector?

Exemplo:

Vector Inicial:

1 | 2 | 3 | 4 | 5

quero apagar a 2 casa(vector começa em 0)

Vector final:

1 | 2 | 4 | 5

-------------

Outra questao era saber como é que poderia passar um int para void

0

Share this post


Link to post
Share on other sites

eu de essa ja tinha conhecimento e ate ja  a usei. Estava era a perguntar se existia outra maneira sem ser essa

0

Share this post


Link to post
Share on other sites

eu de essa ja tinha conhecimento e ate ja  a usei. Estava era a perguntar se existia outra maneira sem ser essa

Porque?

Copias, um a um, todos os elementos excepto o que queres apagar.

0

Share this post


Link to post
Share on other sites

isso eu sei fazer.. o que me interessa é saber se existia outra funçao.. a forma que disses te de copiar 1 a 1 mete o programa mais lento para aquilo que é :-S

mas obrigado na mesma pmg :thumbsup:

0

Share this post


Link to post
Share on other sites

De precisas que seja mais rápido que o desse do vetor, se calhar precisas de usar uma estrutura de dados diferente. Para que e que precisas?

0

Share this post


Link to post
Share on other sites

... precisas de usar uma estrutura de dados diferente ...

+1

Outra questao era saber como é que poderia passar um int para void

Para que? Porque? Nao facas isso!

Passar um int para void é pior que mete-lo a zero --- sugiro que metes a zero em vez de o passares para void.

int_a_passar_para_void = 0; // pronto

0

Share this post


Link to post
Share on other sites

Eu estava a fazer um exercicio da ONI( http://www.dcc.fc.up.pt/oni/problemas/2011/qualificacao/probA.html ) e uma das maneiras que queria fazer era usar aquela estrutura do vector(nao sei bem o nome daquilo; duas coisas muito simples que se metem é  #include <vector> e vector <int>nome_do_vector).

O exercicio basicamente era sempre que se lia uma energia ele entrava num if, fazia push_back e colocava no vector e depois disso usava a funçao qsort para ordenar o vector mas isto dizia que n dava devido a nao aquela situaçao de int para void :-S

so comecei a mexer em c++ e nestas funçoes a pouco :-S a falta de experiência faz me fazer perguntas estúpidas como esta..

0

Share this post


Link to post
Share on other sites

... usava a funçao qsort para ordenar o vector mas isto dizia que n dava devido a nao aquela situaçao de int para void :-S

Ah! Não é de int para void! É de int* para void*: há uma diferença enorme :thumbsup:

Mas para ordenares em C++ usa std::sort() em vez de qsort().

a falta de experiência faz me fazer perguntas estúpidas como esta..

Nao ha perguntas estupidas quando se esta a aprender; todos nós passamos por isso.

0

Share this post


Link to post
Share on other sites

Muito obrigada :thumbsup: nao tinha conhecimento da existencia da funçao sort :D

0

Share this post


Link to post
Share on other sites

Hint: ordenar n vai ajudar mt messe problema. Ja conheces a notacao O() ? Ajuda para explicar o porque. Nao sei se tens seguido a usaco...

Edit: a stl tem uma classe priority_queue

0

Share this post


Link to post
Share on other sites

Tens de ver uma coisa nesse problema, precisas de uma estrutura de dados que te permita realizar pelo menos 3 operacoes:

min() -> apaga e retorna o minimo

max() -> apaga e retorna o maximo

insert() -> insere um valor

Podes por exemplo usar uma heap(http://en.wikipedia.org/wiki/Binary_heap). Com uma pequena modificacao, podes fazer insercoes em O(log N) e remocoes em O(log N), sendo N o numero de bakugans na colecao.

0

Share this post


Link to post
Share on other sites

Eu usei o priority_queue e deu 100 pontos, tens é de ter atenção a uma coisa no final (caso contrário dá 96 e não 100) mas isso não vou dizer, vais ter de chegar lá (não é difícil de reparar)

0

Share this post


Link to post
Share on other sites

Eu sugiro que não se fiem apenas na info da wikipedia, mas penso que essa página sobre binomial_heaps é um bom ponto de partida.

A classe priority_queue é algo limitada (suporta as operações descritas nessa *edit:*página*), especialmente se inserirem dados cuja prioridade pode mudar - operação increase/decrease key  (algo normal em alguns algoritmos de grafos por exemplo).

O ideal era irem vendo algumas coisas no Introduction to Algorithms. Reconheço que é um livro um pouco pesado para nós, em que a nossa educação não nos dá tantas bases como noutros países. Mas podem ir tirando dúvidas no forum ou procurar outros recursos mais "leves" (como a usaco).

Assim numa pesquisa rápida vi este ppt que me parece bom sobre o assunto (que se baseia no livro que referi: CLRS são as iniciais dos autores do Introduction to Algorithms) - www.cs.princeton.edu/~wayne/cs423/lectures/heaps.ppt

0

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  
Followers 0