Jump to content

Programa de contagem de votos


Backpack2.0

Recommended Posts

Citação

10. Numas eleições presidenciais existem quatro candidatos. Os votos são informados através de
códigos. Os dados utilizados para a contagem dos votos obedecem à seguinte codificação:
a) 1 (PS), 2 (PSD), 3 (PP), 4 (PCP) = Voto para os respectivos candidatos;
b) 0 = Voto em branco;
c) Qualquer caractere diferente dos acima mencionados = Voto nulo;
d) O ciclo funciona enquanto o utilizador introduzir uma opção diferente do número 5 ou caso
pretendam utilizar um caracter, que seja a vosso critério.
Elabore um algoritmo que leia um conjunto de código de votos e calcule e escreva:
- Total de votos para cada candidato;
- Total de votos nulos;
- Total de votos em branco;
- Percentagem dos vários partidos. 

programa {
  funcao inicio() {
    inteiro  x=0,soma=0,total=0
    caracter y
    enquanto(x!=5)
    {
      escreva("Escreva o número referente ao seu candidato e ou voto em branco: \n 1 (PS), 2 (PSD), 3 (PP), 4 (PCP), 0 ou qualquer outro caracter = Voto em branco e 5 para finalizar.\n")
      escreva("Digíte um número: ")
      leia(y)
      escolha (x)
      {
        caso 1
        escreva("votou para PS1\n")
        pare
        caso 2
        escreva("Votou para PSD\n")
        pare
        caso  3
        escreva("votou para PP\n")
        pare
        caso 4
        escreva("Votou para PCP\n")
        pare
        caso 0 
        escreva (" voto branco \n") 
        pare
      
      }
      escolha(y)
      {
        escreva("voto branco")
      }
        }
    
    /*10. Numas eleições presidenciais existem quatro candidatos. Os votos são informados através de
códigos. Os dados utilizados para a contagem dos votos obedecem à seguinte codificação:
a) 1 (PS), 2 (PSD), 3 (PP), 4 (PCP) = Voto para os respectivos candidatos;
b) 0 = Voto em branco;
c) Qualquer caractere diferente dos acima mencionados = Voto nulo;
d) O ciclo funciona enquanto o utilizador introduzir uma opção diferente do número 5 ou caso
pretendam utilizar um caracter, que seja a vosso critério.
Elabore um algoritmo que leia um conjunto de código de votos e calcule e escreva:
- Total de votos para cada candidato;
- Total de votos nulos;
- Total de votos em branco;
- Percentagem dos vários partidos. */
  }
}

Desculpei por não ser muito especifico mas eu não sei ao certo como fazer a parte (c) do exercício.

obrigado

Link to comment
Share on other sites

escolha (x)
      {
        caso 1
        escreva("votou para PS1\n")
        pare
        caso 2
        escreva("Votou para PSD\n")
        pare
        caso  3
        escreva("votou para PP\n")
        pare
        caso 4
        escreva("Votou para PCP\n")
        pare
        caso 0 
        escreva (" voto branco \n") 
        pare
        OUTROCASO
      	escreva (" voto branco \n") 
        pare
      }

Tens de corrigir a tua lógica, a alínea d) não está bem implementada. Estás a confundir o x com o y. Se lês o input do utilizador para y tem de ser sobre essa variável que fazes as tuas verificações quer a nível da contagem quer a nível de controlo de execução.

Vais precisar de um array para os resultados dos candidatos (para não teres n variáveis para todas as possibilidades de votos).

Edited by iznougudpt
Corrigido o termo correto
Link to comment
Share on other sites

Aconselho dividir por partes através de funções. Além disso, o uso de uma lista, conforme referido pelo @iznougudpt, irá evitar a necessidade não só de mais variáveis, como a necessidade de um switch-case.

Ora, vamos precisar de:

  1. Uma lista para guardar os 6 resultados possíveis (Nulo, Branco e os 4 partidos):
    votos = [0, 0, 0, 0, 0, 0]   # [Nulo, Branco, PS, PSD, PP, PCP]
  2. Uma função registar() que, dado um código, atualize a lista anterior — como considerámos no ponto anterior que 0 = Nulo, 1 = Branco e os restantes são os partidos, devemos considerar o codigo+1:
    def registar(codigo):
        try:
            votos[int(codigo) + 1] += 1   # Converter para inteiro uma vez que estamos a receber um caracter/string
        except:
            votos[0] += 1   # Código não reconhecido: voto nulo
  3. Uma função votar() que faça o ciclo de votos:
    def votar():
        while True:
            c = input()
            if c in ['S', 's']:   # A letra S será a nossa "chave" de saída
            	break
            registar(c)
  4. Uma função analisar() que faça a análise dos votos:
    def analisar():
        partidos = ["Nulo", "Branco", "PS", "PSD", "PP", "PCP"]   # Nomes dos partidos para o output
        s = sum(votos)   # Soma de todos os votos para cálculo das percentagens
        for i in range(6):
            print("{0:6} -> {1:3} ({2:6.2f}%)".format(partidos[i], votos[i], votos[i] / s * 100))

     

Agora basta fazer a sequência de instruções adequada para votar e analisar os votos registados:

votar()
analisar()

Isto dará origem a algo do género (exemplo):

Nulo   ->   0 (  0.00%)
Branco ->   1 ( 11.11%)
PS     ->   3 ( 33.33%)
PSD    ->   2 ( 22.22%)
PP     ->   1 ( 11.11%)
PCP    ->   2 ( 22.22%)

 

O truque aqui foi usar directamente os códigos como índices da lista, o que permite deixar de lado o switch-case, reduzindo assim a complexidade do código.

Faço notar que pode haver aqui estruturas e/ou funções que ainda não aprendeste, pelo que poderá ser necessário adaptar de acordo com o esperado pelo avaliador (professor, formador...).

Caso tenhas dúvidas, não hesites em perguntar 😉 

 

Cumprimentos.

Edited by thoga31
Comentários adicionais

Knowledge is free!

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.