Backpack2.0 Posted November 15, 2022 at 03:52 PM Report Share #628176 Posted November 15, 2022 at 03:52 PM 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 More sharing options...
thoga31 Posted November 15, 2022 at 05:11 PM Report Share #628181 Posted November 15, 2022 at 05:11 PM Isso não é Python. Qual a linguagem em causa? Portugol? Knowledge is free! Link to comment Share on other sites More sharing options...
iznougudpt Posted November 15, 2022 at 05:39 PM Report Share #628184 Posted November 15, 2022 at 05:39 PM (edited) Em 15/11/2022 às 17:11, thoga31 disse: Isso não é Python. Qual a linguagem em causa? Portugol? Pseudo-código. É muito utilizado como introdução à programação. Agora que reparei, existe mesmo essa linguagem Portugol 🙂 Edited November 15, 2022 at 06:01 PM by iznougudpt Mais info Link to comment Share on other sites More sharing options...
iznougudpt Posted November 15, 2022 at 05:47 PM Report Share #628185 Posted November 15, 2022 at 05:47 PM (edited) 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 November 15, 2022 at 06:02 PM by iznougudpt Corrigido o termo correto Link to comment Share on other sites More sharing options...
thoga31 Posted November 15, 2022 at 07:25 PM Report Share #628186 Posted November 15, 2022 at 07:25 PM (edited) 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: 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] 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 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) 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 November 15, 2022 at 07:30 PM by thoga31 Comentários adicionais Knowledge is free! Link to comment Share on other sites More sharing options...
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