Ir para conteúdo


Revista PROGRAMAR - Edição 44 (Fevereiro 2014): Download já disponível!

- - - - -

Duvida na existencia de uma função


  • Por favor inicie sessão para responder
15 respostas a este tópico

#1 Joao brandao

Joao brandao

    Boolean User

  • Membro
  • PipPipPip
  • 167 mensagens

Publicado 10 de Março de 2012 - 23:53

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

#2 pmg

pmg

    Unsigned User

  • Moderador
  • PipPipPipPipPipPip
  • 3688 mensagens

Publicado 11 de Março de 2012 - 00:50

http://www.cplusplus.com/reference/stl/vector/erase/

Primeiro HIT do melhor amigo do programador! (Hmmm ... eu agora uso mais o DuckDuckGo).

#3 Joao brandao

Joao brandao

    Boolean User

  • Membro
  • PipPipPip
  • 167 mensagens

Publicado 11 de Março de 2012 - 00:54

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

#4 pmg

pmg

    Unsigned User

  • Moderador
  • PipPipPipPipPipPip
  • 3688 mensagens

Publicado 11 de Março de 2012 - 00:58

Ver MensagemJoao brandao, em 11 de Março de 2012 - 00:54, disse:

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.

#5 Joao brandao

Joao brandao

    Boolean User

  • Membro
  • PipPipPip
  • 167 mensagens

Publicado 11 de Março de 2012 - 01:15

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:

#6 xtrm0

xtrm0

    CRLF

  • Membro
  • PipPipPipPipPip
  • 504 mensagens

Publicado 11 de Março de 2012 - 01:20

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?

#7 pmg

pmg

    Unsigned User

  • Moderador
  • PipPipPipPipPipPip
  • 3688 mensagens

Publicado 11 de Março de 2012 - 11:03

Ver Mensagemxtrm0, em 11 de Março de 2012 - 01:20, disse:

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

Ver MensagemJoao brandao, em 10 de Março de 2012 - 23:53, disse:

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.

Código (C++):
int_a_passar_para_void = 0; // pronto


#8 Joao brandao

Joao brandao

    Boolean User

  • Membro
  • PipPipPip
  • 167 mensagens

Publicado 11 de Março de 2012 - 11:38

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..

#9 pmg

pmg

    Unsigned User

  • Moderador
  • PipPipPipPipPipPip
  • 3688 mensagens

Publicado 11 de Março de 2012 - 12:54

Ver MensagemJoao brandao, em 11 de Março de 2012 - 11:38, disse:

... 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().


Ver MensagemJoao brandao, em 11 de Março de 2012 - 11:38, disse:

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.

#10 Joao brandao

Joao brandao

    Boolean User

  • Membro
  • PipPipPip
  • 167 mensagens

Publicado 11 de Março de 2012 - 12:56

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

#11 mogers

mogers

    Unsigned User

  • Membro
  • PipPipPipPipPipPip
  • 1795 mensagens

Publicado 11 de Março de 2012 - 17:59

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

#12 xtrm0

xtrm0

    CRLF

  • Membro
  • PipPipPipPipPip
  • 504 mensagens

Publicado 11 de Março de 2012 - 18:09

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.

#13 JoaoSantos95

JoaoSantos95

    void

  • Membro
  • PipPip
  • 63 mensagens

Publicado 11 de Março de 2012 - 21:22

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)

#14 Joao brandao

Joao brandao

    Boolean User

  • Membro
  • PipPipPip
  • 167 mensagens

Publicado 11 de Março de 2012 - 21:54

hum kk ;) vou tentar fazer com  priority_queue.
ja agora, para quem quiser vou deixar ai algumas das resoluções possiveis para este problema e os pontos que teriam ao tentar resolver desta forma.
http://www.2shared.com/file/7_he9Rh_/ProblemaA.html

tem 1 ou 2 formas com C e o resto com C++

#15 mogers

mogers

    Unsigned User

  • Membro
  • PipPipPipPipPipPip
  • 1795 mensagens

Publicado 11 de Março de 2012 - 22:11

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

#16 Joao brandao

Joao brandao

    Boolean User

  • Membro
  • PipPipPip
  • 167 mensagens

Publicado 11 de Março de 2012 - 22:39

obrigada pela informação ;)