Ajuda a fazer uma procura numa List<> em C#
|
10-03-2011, 19:22
Mensagem: #1
|
|||
|
|||
Ajuda a fazer uma procura numa List<> em C#
Boas pessoal,
Estou a ter dificuldades em fazer uma procura numa List<>. Eu criei uma pequena struct chamada carro e dai criei uma List de carros. Código: struct Carro Espero que me possam ajudar a resolver este problema. Muito obrigado pela ajuda desde já. Cumps |
|||
10-03-2011, 20:40
Mensagem: #2
|
|||
|
|||
RE: Ajuda a fazer uma procura numa List<> em C#
Não trabalho com C#, mas vou te dar +- a ideia de como faria em java.. dado que o c# é um plagio a solução é generalista.
1º recomendar-te-ia que fizesses uma pequena class para o carro. 2º usares uma treemap para a class carro com ordenação pela data de matricula, já que estas ficam automaticamente ordenadas e evitas as procuras. 3º retirar o carro com menor matricula (basicamente é o elemento mais à esquerda da arvore). Desta forma nao andas a fazer procuras loucas pois inseres os elementos logo ordenados. cumps |
|||
10-03-2011, 21:32
Mensagem: #3
|
|||
|
|||
RE: Ajuda a fazer uma procura numa List<> em C#
Muito obrigado pela ajuda Guilherme de Sousa mas não sei qual é o equivalente duma TreeMap do Java em C#. Tenho de retirar pelo ano e não pela matricula (sei que não interessa pelo qual preciso de retirar, visto que se conseguir tirar carro a carro pelo ano, será idêntico se quisesse tirar por outro campo). E neste meu caso preciso mesmo de usar uma List<> . Mais uma vez obrigado.
|
|||
10-03-2011, 21:58
Mensagem: #4
|
|||
|
|||
RE: Ajuda a fazer uma procura numa List<> em C#
Então faz simplesmente a inserção na lista dos carros todos, no final quando os quiseres retirar começas por por uma variável x igual ao ano do primeiro carro que sair, e outra para o índice da posição da lista desse mesmo carro. Depois vais percorrendo a lista e comparando a data que tens guardada na variável x com a da posição actual.. se for > (maior ano == carro mais novo), guardas na variável x o ano desse carro e na variável do índice o índice desse mesmo carro. Quando chegares ao fim sabes qual o carro mais novo e removes da lista.. depois é só repetires isto ate a lista se encontrar vazia.. isto é provavelmente o que o docente pretende, no entanto o método mais fácil seria no final da inserção fazeres um sort à lista toda de forma a ficar ordenada e depois é só tirares os elementos do topo da lista.
cumps! |
|||
10-03-2011, 21:58
Mensagem: #5
|
|||
|
|||
RE: Ajuda a fazer uma procura numa List<> em C#
Das duas uma:
- Inseres logo os carros ordenadamente na lista e depois vais apagando de trás para a frente; - Inseres ao "deus dará" e fazes buscas lineares guardando numa variável a posição do carro a eliminar. Eu faria a primeira. |
|||
10-03-2011, 22:12
Mensagem: #6
|
|||
|
|||
RE: Ajuda a fazer uma procura numa List<> em C#
Acho que já percebi. Muito Obrigado aos dois pela ajuda.
Cumps |
|||
13-03-2011, 15:04
Mensagem: #7
|
|||
|
|||
RE: Ajuda a fazer uma procura numa List<> em C#
Boas pessoal, para não complicar a criar mais um tópico optei por aproveitar este (espero que não levem a mal o double post) para pedir vos novamente a vossa preciosa ajuda. O problema baseia-se nos dados no inicio do tópico, a minha dúvida é de que maneira fazer um "++" a todos os que estão na lista (o exemplo que meto é aumentar o ano a todos que estão na lista). Eu tentei com estas duas maneiras mas nenhuma das duas funcionou e dão o mesmo erro "Cannot modify members of 'c' because it is a 'foreach iteration variable'"
Código: foreach(Carro c in listCarros) Será que me podem ajudar? Obrigado mais uma vez. Cumps |
|||
13-03-2011, 15:16
Mensagem: #8
|
|||
|
|||
RE: Ajuda a fazer uma procura numa List<> em C#
Troca a struct carro por uma class. Quando se programa por objectos é bom manter o padrão de utilizar so objectos. A forma como uma linguagem orientada a objectos é programada (o seu compilador portanto), baseia o conceito de objecto numa struct, mas com bastantes mais coisas e mais flexível.. e fácil de programar.
cumps |
|||
13-03-2011, 20:30
Mensagem: #9
|
|||
|
|||
RE: Ajuda a fazer uma procura numa List<> em C#
Muito obrigado pela ajuda, fiz como sugeriu e criei a classe Carro mas agora estou com outro problema, não consigo enviar os dados para o vector. No form ao clicar no botao que cria os carros aleatoriamente aparece o erro "A referência de objecto não foi definida como uma instância de um objecto.". O codigo que tenho no botao é este:
Código: Carro[] vecCarros = new Carro[999]; Existe maneira de poder manter o vector fora da classe? Se sim, será que me pode ajudar? Cumps |
|||
13-03-2011, 20:49
Mensagem: #10
|
|||
|
|||
RE: Ajuda a fazer uma procura numa List<> em C#
Em vez de estares a fazer essa inicialização assim porque não a metes dentro do construtor da class?
cumps |
|||
« Mais Antigo | Mais Recente »
|
Utilizadores a ver este tópico: 3 Visitante(s)