Ir ao conteúdo
  • Cadastre-se
theconqueror

Preciso criar um programa em C para eleições

Recommended Posts

Tenho um projeto que consiste em criar um programa voltado para as eleições de 2018. Ele deve exibir na tela os candidatos para presidente, governador, deputados e senadores e seus números. O eleitor digita o número dos candidatos e conclui sua votação. Porém, o programa deve estar apto a aceitar infinitos votos, pois não se sabe quantos eleitores votarão. Ao mesmo tempo, ele deve contabilizar os votos e exibir uma porcentagem ao final da eleição (eu digitarei um código que deve encerrar a votação) dos vencedores, número total de votos, votos em candidatos dos sexos masculino e feminino e a necessidade de segundo turno. Ou seja, um loop que só pode ser quebrado quando eu decidir. Não sei como faço essa repetição, como insiro um mecanismo de quebra e como exibir as estatísticas finais. A repetição precisa acontecer mas sem resetar os valores das variáveis que estarão contando os votos. Por enquanto só tenho os printf solicitando ao eleitor o seu voto e os scanf armazenando o número digitado pelo usuário.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dado que o programa deve aceitar infinitos votos, não é uma boa ideia deixar os votos só na memória, embora isso seja possível caso o número de votos não seja grande. É melhor abrir arquivos e ir escrevendo cada voto em uma linha. Para fazer a interrupção do registro de votos pode-se tomar várias alternativas, inclusive perguntar ao final de cada voto se deseja inserir um novo voto.

Se quiser pode criar um arquivo para cada categoria: presidente, governador, deputados e senadores. Essa será a parte responsável por registrar os votos. O usuário vai digitando os números e o programa vai escrevendo o voto atual no final de cada arquivo (modo append). Para fazer essa parte vai ser necessário usar somente as funções da <stdio.h>: as que você pode precisar vão ser fopen, fwrite, fprintf, fputs. Se quiser também pode usar a <unistd.h>, mais rápida e que gasta menos memória, mas ela só funciona nos sistemas baseados em Unix, sendo os mais famosos o GNU/Linux e o OSX, e só opera em modo binário, sem toda a facilidade da <stdio.h>.

Agora a contagem de votos e validação dos resultados é a parte mais complicada. Considerando que vai usar essa abordagem com arquivos, terá que ler cada arquivo e contar a ocorrência de cada voto. Para isso, a lista de candidatos e os dados de cada um já devem estar previamente definidas, muito provavelmente usando uma struct. Para ler os dados muito provavelmente um fscanf já faz o trabalho de ler linha por linha de seu arquivo. Para cada arquivo conte o número de ocorrências e já ficará sabendo o total de votos em cada candidato.

Depois vem a parte estatística de dizer a porcentagem de votos em cada um e a porcentagem de votos em candidatos masculinos e femininos. O desafio já é menor pois já deve ter implementado uma estrutura de dados para os candidatos. Para descobrir as porcentagens basta dividir o total de votos em um candidato pelo total de votos válidos (acho que é este o cálculo correto na legislação), já o número de votos em homens e mulheres vai exigir que acesse o campo do sexo de cada um dos dados dos candidatos e conte a ocorrência de masculino e feminino em cada um.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro usuário,

 

Seja bem-vindo ao Fórum do Clube do Hardware.

 

No intuito de servir como fonte de pesquisa no caso de instituições de ensino, informamos que incorrer no resolvimento por completo de questões relacionadas a disciplinas escolares de cursos técnicos e faculdades podem ser revistas e removidas pela Equipe de Moderação do Clube do Hardware.

 

Para sanar dúvidas sobre esse tipo de problema, por gentileza, publique o passo a passo do desenvolvimento da questão, projeto, monografia ou conteúdo em dúvida para que possamos analisar se a resposta está correta ou não, ou para que possa ser auxiliado com a dúvida no desenvolvimento do exercício.

 

Infelizmente, não há como resolver os trabalhos pelos usuários. O objetivo do Fórum do Clube do Hardware é auxiliar seus usuários a encontrar soluções para que possam sanar suas dúvidas, e não de trazer soluções prontas para seus usuários.. Além disso, copiar e colar respostas que não são de autoria própria do qualquer usuário é considerado plágio, o que é ilegal.

 

Esperamos que compreenda.

 

Atenciosamente,

Equipe Clube do Hardware

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Davi Silva Santos o problema em deixar os votos em um arquivo é que você vai perder em questão de segurança(por exemplo, se alguém quiser saber em quem cada pessoa votou, vai conseguir saber isso com uma facilidade extrema).

 

Estou falando isso pois o voto tem que ser secreto(a não ser que esse programa seja apenas um exercício, mas se realmente for um programa para eleições, você deve levar em consideração isso).

 

O ideal seria criar um banco de dados onde vai ficar armazenado os votos e usar uma biblioteca por fora para  se comunicar com o banco de dados.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@cyer Acho que não teria problema, pois seria guardado somente o número digitado do candidato, e não o voto completo. No final ainda poderia embaralhar os arquivos para que não ficassem na ordem de votação.

Sem falar que acho que é um exercício mesmo, mas quanto mais bem feito melhor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×