Ajuda a fazer uma procura numa List<> em C# - Versão de Impressão +- Forum Pplware (http://forum.pplware.com) +-- Fórum: Mais Tech (/forumdisplay.php?fid=11) +--- Fórum: Programação e Web (/forumdisplay.php?fid=16) +--- Tópico: Ajuda a fazer uma procura numa List<> em C# (/showthread.php?tid=8589) |
Ajuda a fazer uma procura numa List<> em C# - kimLex - 10-03-2011 19:22 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 RE: Ajuda a fazer uma procura numa List<> em C# - Guilherme de Sousa - 10-03-2011 20:40 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 RE: Ajuda a fazer uma procura numa List<> em C# - kimLex - 10-03-2011 21:32 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. RE: Ajuda a fazer uma procura numa List<> em C# - Guilherme de Sousa - 10-03-2011 21:58 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! RE: Ajuda a fazer uma procura numa List<> em C# - sLUGo - 10-03-2011 21:58 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. RE: Ajuda a fazer uma procura numa List<> em C# - kimLex - 10-03-2011 22:12 Acho que já percebi. Muito Obrigado aos dois pela ajuda. Cumps RE: Ajuda a fazer uma procura numa List<> em C# - kimLex - 13-03-2011 15:04 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 RE: Ajuda a fazer uma procura numa List<> em C# - Guilherme de Sousa - 13-03-2011 15:16 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 RE: Ajuda a fazer uma procura numa List<> em C# - kimLex - 13-03-2011 20:30 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 RE: Ajuda a fazer uma procura numa List<> em C# - Guilherme de Sousa - 13-03-2011 20:49 Em vez de estares a fazer essa inicialização assim porque não a metes dentro do construtor da class? cumps |