1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Verificar duplicidade de voto

Preciso, no case 3, que antes de salvar o voto em urna ele verificasse se o usuario já votou, se já existe o mesmo nome em urna. Já alterei o código por diversas vezes mas ele sempre salva o mesmo nome em todas as posições de urna.

 class Program
    {
        //Criando uma estrutura eleitores
        public struct eleitores
        {
            public string nome;
            public int titulo_eleitoral;
            public string data_nasc;
        }

        //Criando uma estrutura canditados
        public struct candidatos
        {
            public string nome;
            public int nro_candidato;
        }

        //Criando uma estrutura urna
        public struct urna
        {
            public string nome_eleitor;
            public int nro_candidato;
        }
        static void Main(string[] args)
        {
            int tam = 3;
            //Instanciando as structs com vetor definido
            candidatos[] candidatos = new candidatos[tam];
            eleitores[] eleitores = new eleitores[tam];
            urna[] urna = new urna[tam];

            //Variaveis
            int opcao, i = 0, posicaoUrna = 0;
            bool votou = false, cadastrado = false;
            urna[0].nome_eleitor = "";

            //Menu principal
            Console.WriteLine("   URNA ELETRONICA");
            Console.WriteLine("- - - - - - - - - - -");
            do
            {
                Console.WriteLine("Escolha uma opcao: ");
                Console.WriteLine();
                Console.WriteLine("1: Cadastro de Candidado");
                Console.WriteLine("2: Cadastro de Eleitor");
                Console.WriteLine("3: Votar");
                //Opcao 4 apenas para testar as inserções
                Console.WriteLine("4: Ver");
                Console.WriteLine("0: Sair");
                //Lendo a opcao
                Console.WriteLine();
                Console.Write("Opcao: ");
                opcao = Convert.ToInt16(Console.ReadLine());
                Console.Clear();

                switch (opcao)
                {
                    case 1:
                        for (i = 0; i < tam; i++)
                        {
                            Console.WriteLine("Cadastro de Candidatos");
                            Console.WriteLine();
                            Console.Write("Nome do candidato: ");
                            candidatos[i].nome = Console.ReadLine();
                            Console.Write("Numero do candidato: ");
                            candidatos[i].nro_candidato = Convert.ToInt16(Console.ReadLine());
                            Console.Clear();
                        }
                        break;
                    case 2:
                        for (i = 0; i < tam; i++)
                        {
                            Console.WriteLine("Cadastro de Eleitores");
                            Console.WriteLine();
                            Console.Write("Nome do eleitor: ");
                            eleitores[i].nome = Console.ReadLine();
                            //Console.Write("Titulo eleitoral: ");
                            //eleitores[i].titulo_eleitoral = Convert.ToInt16(Console.ReadLine());
                            //Console.Write("Data de nascimento(DD/MM/AAAA): ");
                            //eleitores[i].data_nasc = Console.ReadLine();

                            Console.Clear();
                        }
                        break;
                    case 3:
                        {
                            string eleitor;
                            int voto, cont = 0;
                            for (i = 0; i < tam; i++)
                            {
                                Console.Write("Nome do eleitor: ");
                                eleitor = Console.ReadLine();
                                Console.Write("Numero do candidato: ");
                                voto = Convert.ToInt16(Console.ReadLine());
                                Console.Clear();

                                for (int posicaoEleitor = 0; posicaoEleitor < eleitores.Length; posicaoEleitor++)
                                {
                                    if (eleitor == eleitores[posicaoEleitor].nome)
                                    {
                                        cadastrado = true;
                                    }
                                }
                                {
                                    if (cadastrado == true)
                                    {
                                        Console.WriteLine("Tem cadastro");
                                        for(posicaoUrna = 0; posicaoUrna < urna.Length; posicaoUrna++)
                                        {
                                            if (eleitor != urna[posicaoUrna].nome_eleitor)
                                            {
                                                votou = true;
                                            }

                                        }
                                    }
                                    else
                                        Console.WriteLine("Não tem cadastro");
                                    }
                                    if (votou == true)
                                    {
                                        Console.WriteLine("Pode salvar");
                                        urna[posicaoUrna].nome_eleitor = eleitor;
                                        urna[posicaoUrna].nro_candidato = voto;
                                    }
                                    else
                                        Console.WriteLine("Não pode salvar");


                                cadastrado = false;
                            votou = false;
                            }
                            break;
                        }
                    case 4: // será retirada
                        for (i = 0; i < tam; i++)
                        {
                            Console.WriteLine(urna[i].nome_eleitor);
                        }
                        break;
                }
            } while (opcao != 0);
            Console.WriteLine("Finalizando o serviço");
            Console.ReadKey();
        }
    }
}
  • Desen, sugiro que você use um numero identificador, pois alem de nao ser consistente ficar comparando Strings, nomes possui duplicidades, se comparar um ID unico nao tera esse problema.

    tironinho   07 de abr de 2015
  • eu tentei usando o numero do titulo de eleitor mas também salva em todas as posiçoes de urna

    Desen   07 de abr de 2015
  • pelo que percebi você tem um vetor com os eleitores cadastrados para votar na urna, no momento que você fizer a contabilização remova ele do vetor para que ele nao possa mais votar.

    tironinho   07 de abr de 2015
  • Desen, o problema nao esta no Case 3... Mais sim no Case 2 no momento em que voce ta cadastrando os dados...Ele ta fazendo for em todas as posicoes...E inserindo o nome do mesmo na cara em todas!!! tem que fazer um IF lah.

    tironinho   07 de abr de 2015
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

2 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags c# ou faça a sua própria pergunta.