Xedoc Posted March 3, 2014 at 12:37 PM Report #547330 Posted March 3, 2014 at 12:37 PM Eu estou um pouco perdido... Eu criei basicamente um programa " questionário " em que o utilizador vai escrever nas TextBoxes o nome etc... Depois tem ComboBoxes em que o utilizador vai selecionar por exemplo o continente onde vai passar as férias. Estes " continentes " estão dentro de um ComboBox no programa principal. Agora criei uma classe " Sondagem " e procuro um método que diga ao utilizador qual é o Continente mais "procurado" pelos utilizadores. Eu na net encontrei este método mas nem sei se ele funciona para o ComboBox... class Sondagem { private List<string> Continente; public Sondagem(List<string> Continente) { this.Continente = Continente; } Alguém sabe qual é o método que devo usar a seguir para que ele diga por fim o continente mais usado pelo utilizador ? Não quero nada de base de dados. Procuro algo simples por sou iniciado. :| Cumprimentos.
santanaguy Posted March 5, 2014 at 04:22 PM Report #547642 Posted March 5, 2014 at 04:22 PM Olá. Claramente deve haver algum sítio onde tens as escolhas do utilizador gravadas. Essa sondagem depois terá um método que olha para esses dados e verifica neles quais os continentes mais seleccionados pelo utilizador. Mas esse método terás tu que fazer, e basicamente o que ele faz é uma contagem de quantas vezes cada continente foi escolhido. Dado que isto é algo simples, eu criava uma classe chamada "Utilizador". Cada utilizador faz apenas uma escolha (certo?), por isso nessa classe podes meter como propriedade a escolha que o utilizador fez. Depois em algum sítio (poderá ser uma lista em memória de utilizadores, para não complicar), vais ter todas as instâncias da classe "Utilizador", que tem lá a escolha de cada um. É para essas instâncias que vais olhar ao implementar o método na classe Sondagem. Cumprimentos
bioshock Posted March 6, 2014 at 09:42 AM Report #547695 Posted March 6, 2014 at 09:42 AM Totalmente desnecessário criar uma classe só para perceber qual é o continente mais utilizado.. Crias uma lista de strings e depois verificas via Linq qual é o continente mais utilizado. List<string> continentes = new List<string>() { "Asia", "Europa", "America", "Europa" }; String mostUsed = (from cont in continentes group cont by cont into g orderby g.Count() descending select g.Key).FirstOrDefault(); // Não testado mas deve funcionar Depois chamas as funções da variável mostUsed.Key, mostUsed.Count;
pikax Posted March 6, 2014 at 09:59 AM Report #547697 Posted March 6, 2014 at 09:59 AM List continentes = new List() { "Asia", "Europa", "America", "Europa" }; string maisUsada = continentes.ToLookup(x => x) //Agrupa os continentes .OrderByDescending(x=>x.Count()) //Ordena por ordem decrescente .FirstOrDefault() //primeiro registo que e' o que tem mais .Key; Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender. A beleza de um código está em decompor problemas complexos em pequenos blocos simples. "learn how to do it manually first, then use the wizzy tool to save time." "Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."
santanaguy Posted March 7, 2014 at 09:13 PM Report #547865 Posted March 7, 2014 at 09:13 PM Olá! Sendo que apenas queres os nomes dos continentes, então sim, a solução do bioshock é óptima. No entanto, se quiseres evoluir o código com mais algumas informações, aconselho-te aí sim a utilizar a classe. É algo que convém aprender de qualquer forma e nem sequer é complexo, por isso terás que te habituar. Pelo menos é o que eu faria, uma vez que *normalmente* a melhor prática é utilizar classes para representar os conceitos. Abraço
Xedoc Posted March 10, 2014 at 12:59 PM Author Report #548061 Posted March 10, 2014 at 12:59 PM Eu também me lembrei de fazer uma tabela, seria mais fácil mas o exercicio pede mesmo para criar uma class. Não posso usar uma tabela a não ser que seja um complemento do exercicio que contenha a Class. A minha class Sondagem é a seguinte: class Sondage { private List<string> Continent; public Sondage(List<string> cbContinent) { Continent = cbContinent; } } cbContinent é o nome da combo box onde estão alojados os nomes dos continentes. O que pretendo agora é fazer com que a Classe sondagem faça a tal contagem e que guarde essa informação. Esse voto tem que ser usado para depois o programa precisar quantos votos foram para cada um dos continentes. Ainda agora comecei a aprender sobre classes por isso pretendo algo simples e que me permita perceber o que escrevo.
Flinger Posted March 12, 2014 at 09:47 AM Report #548335 Posted March 12, 2014 at 09:47 AM Então devias ler mais um bocadinho sobre classes e sobre o encapsulamento. 1.º conselho, não mistures objectos gráficos (combobox) com as tuas classes. 2.º Uma combobox não te guarda sozinha o número de vezes que uma entrada é seleccionada. Usa antes uma estrutura que te permita guardar o número de entradas de cada continente, ou simplesmente todoas as entradas feitas. Por exemplo, estás a tentar inicializar a tua sondagem (em inglês "survey") com todos os valores da combobox (e de forma errada). Porque não a inicializas vazia, e adicionas cada entrada através de um método? A tua classe pode adicionar cada entrada nova à lista, ou ter uma estrutura mais complexa que te verifica se essa entrada já existe, e somar 1 à frequência. Para obteres todas as entradas na combobox: cbContinent.Items para saberes que entrada está selecionada: cbContinent.SelectedItem para mais informação sobre como lidar com comboboxes: http://msdn.microsoft.com/en-us/library/system.windows.forms.combobox(v=vs.110).aspx
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now