GPumas Posted November 3, 2009 at 10:35 PM Report Share #294600 Posted November 3, 2009 at 10:35 PM Boas, Eu estou a fazer um trabalho de programação em que tenho de desenvolver um programa de contagem de votos. O programa deve pedir ao utilizador ( ou utilizadores já que o número de eleitores é definido logo no início do programa pelo utilizador ) para introduzir as pontuações para A, B, ou C, segundo algumas regras que agora não interessam. Depois disto deve aparecer no ecrã a soma das pontuações de A B e C ordenadas da maior para a menor. Como forma de desempate deve recorrer-se à média, se necessário. Já tenho feito até à introdução das pontuações e respectivas restrições, mas os passos seguintes não sei como fazer. Penso que tanto a soma como a média das pontuações deve ser feita por métodos mas ainda não consegui perceber como funcionam. Aceitam-se sugestões. Link to comment Share on other sites More sharing options...
bruno1234 Posted November 3, 2009 at 10:47 PM Report Share #294604 Posted November 3, 2009 at 10:47 PM Tanto a média como a soma, podes calcular através de simples ciclo. Matraquilhos para Android. Gratuito na Play Store. https://play.google.com/store/apps/details?id=pt.bca.matraquilhos Link to comment Share on other sites More sharing options...
GPumas Posted November 3, 2009 at 10:51 PM Author Report Share #294605 Posted November 3, 2009 at 10:51 PM Como? Eu já tenho um for criado para o número de eleitores e um if else para as restrições na atribuição de pontuações. Link to comment Share on other sites More sharing options...
bruno1234 Posted November 3, 2009 at 11:01 PM Report Share #294608 Posted November 3, 2009 at 11:01 PM Mas o q é q n consegues fazer em concreto? Se tens o numero de votos, tens a soma. E a média é dividir o numero de votos pelo numero de eleitores. Matraquilhos para Android. Gratuito na Play Store. https://play.google.com/store/apps/details?id=pt.bca.matraquilhos Link to comment Share on other sites More sharing options...
GPumas Posted November 3, 2009 at 11:07 PM Author Report Share #294611 Posted November 3, 2009 at 11:07 PM O programa consiste no seguinte: inicialmente o utilizador deve indicar o número de eleitores que vão votar. depois cada eleitor deve introduzir uma nota de 0 a 100 para cada uma das opções: A, B e C. O que eu pretendo fazer agora é somar as pontuações atribuídas a cada uma das opções e mostrar cada uma delas no ecrã por ordem decrescente. Ex: eleitor 1: 10 pontos para A; 20 para B; 30 para C ----- Valores introduzidos eleitor 2: 50 para A; 30 para B; 40 para C ------------ pelo utilizador . . eleitor n C: 70 ---------- Aparecer no ecrã depois A: 60 ---------- de todos os utilizadores B: 50 ---------- introduzirem as pontuações Além disto ainda tenho de criar um método com a média que será utilizado caso alguma das opções esteja empatada. Penso que agora me expliquei bem mas se mesmo assim não perceberes alguma coisa diz. Link to comment Share on other sites More sharing options...
bruno1234 Posted November 3, 2009 at 11:37 PM Report Share #294614 Posted November 3, 2009 at 11:37 PM Que código tens até agora? Matraquilhos para Android. Gratuito na Play Store. https://play.google.com/store/apps/details?id=pt.bca.matraquilhos Link to comment Share on other sites More sharing options...
GPumas Posted November 3, 2009 at 11:50 PM Author Report Share #294618 Posted November 3, 2009 at 11:50 PM até agora tenho isto: import java.util.Scanner; /** *@author */ public class votos { public static void main (String [] args ) { /** Le um valor introduzido pelo utilizador que vai definir o numero de votantes */ Scanner numvotantes = new Scanner (System.in); System.out.print("Numero de eleitores: "); int votantes = numvotantes.nextInt(); /** Faz o scan das pontuaçoes introduzidas pelo utilizador*/ for(int eleitor =1; eleitor<= votantes; eleitor++){ System.out.println ("Faca o favor de introduzir a pontuacao desejada. Eleitor "+eleitor); Scanner pontos =new Scanner (System.in); System.out.print("pontuacao para A: "); int votoa= pontos.nextInt(); System.out.print("pontuacao para B: "); int votob =pontos.nextInt(); System.out.print("pontuacao para C: "); int votoc = pontos.nextInt (); if(votoa>100 || votob>100 || votoc>100 || votoa+votob+votoc>100){ eleitor= eleitor - 1; System.out.println ("Pontuacao introduzida invalida. Efectue nova votacao");} else System.out.println ("obrigado pelo seu voto"); } } } O que me falta fazer é somar a pontuação obtida por cada uma das opções (e ordenar por ordem decrescente) e também criar uma forma de caso existam opções empatadas seja feito o esempate (terá de ser pela média) Link to comment Share on other sites More sharing options...
GPumas Posted November 4, 2009 at 06:36 PM Author Report Share #294720 Posted November 4, 2009 at 06:36 PM Já tenho o programa feito. Obrigado Link to comment Share on other sites More sharing options...
KiNgPiTo Posted November 4, 2009 at 06:37 PM Report Share #294721 Posted November 4, 2009 at 06:37 PM até agora tenho isto: import java.util.Scanner; /** *@author */ public class votos { public static void main (String [] args ) { /** Le um valor introduzido pelo utilizador que vai definir o numero de votantes */ Scanner numvotantes = new Scanner (System.in); System.out.print("Numero de eleitores: "); int votantes = numvotantes.nextInt(); /** Faz o scan das pontuaçoes introduzidas pelo utilizador*/ for(int eleitor =1; eleitor<= votantes; eleitor++){ System.out.println ("Faca o favor de introduzir a pontuacao desejada. Eleitor "+eleitor); Scanner pontos =new Scanner (System.in); System.out.print("pontuacao para A: "); int votoa= pontos.nextInt(); System.out.print("pontuacao para B: "); int votob =pontos.nextInt(); System.out.print("pontuacao para C: "); int votoc = pontos.nextInt (); if(votoa>100 || votob>100 || votoc>100 || votoa+votob+votoc>100){ eleitor= eleitor - 1; System.out.println ("Pontuacao introduzida invalida. Efectue nova votacao");} else System.out.println ("obrigado pelo seu voto"); } } } O que me falta fazer é somar a pontuação obtida por cada uma das opções (e ordenar por ordem decrescente) e também criar uma forma de caso existam opções empatadas seja feito o esempate (terá de ser pela média) Podias inserir o resultado, pode haver quem tenha uma dúvida semelhante 🙂 Link to comment Share on other sites More sharing options...
GPumas Posted November 28, 2009 at 03:08 AM Author Report Share #297888 Posted November 28, 2009 at 03:08 AM O código final foi este import java.util.Scanner; public class votos2 { public static void main (String [] args ) { /** Le um valor introduzido pelo utilizador que vai definir o numero de eleitores */ Scanner numvotantes = new Scanner (System.in); int votantes = 0; do{ System.out.print("Numero de eleitores: "); votantes = numvotantes.nextInt(); if( votantes<1 ) System.out.println("Numero de eleitores invalido. "); System.out.println(""); } while(votantes< 1); int somaA = 0; int somaB = 0; int somaC = 0; int contadora = 0; int contadorb = 0; int contadorc = 0; boolean erro= false; /** Faz o scan das pontuacoes introduzidas pelo utilizador*/ for(int eleitor =1; eleitor<= votantes; eleitor++) { System.out.println(""); System.out.println ("Eleitor " + eleitor +", faca o favor de introduzir a pontuacao desejada. ( A soma das pontuacoes atribuidas a cada uma das opcoes nao deve exceder o numero 100 e, alem disso, nao deve atribuir valores negativos nem superiores a 100 a nenhuma das opcoes )."); System.out.println(""); Scanner pontos =new Scanner (System.in); do{ System.out.print("Pontuacao para A: "); int votoa = pontos.nextInt(); System.out.print("Pontuacao para B: "); int votob =pontos.nextInt(); System.out.print("Pontuacao para C: "); int votoc = pontos.nextInt (); /** Aplica as restricoes */ if(votoa>100 || votob>100 || votoc>100 || votoa+votob+votoc>100){ erro=true; System.out.println(""); System.out.println ("A pontuacao que introduziu nao respeita as regras. Efectue nova votacao"); System.out.println(""); } else { somaA += votoa; somaB += votob; somaC += votoc; erro=false; System.out.println(""); System.out.println ("Obrigado pelo seu voto"); if (votoa>0 && votoa<=100 ) contadora ++; if (votob>0 && votob<=100 ) contadorb ++; if (votoc>0 && votoc<=100 ) contadorc ++; } }while(erro); } /** Faz a media de cada uma das opcoes*/ double mediaA = Math.round(((double) somaA/(double) contadora)*10.0)/10.0; double mediaB = Math.round(((double) somaB/(double) contadorb)*10.0)/10.0; double mediaC = Math.round(((double) somaC/(double) contadorc)*10.0)/10.0; /** Imprime no ecra o valor da pontuacao obtida por cada uma das opcoes e tambem a media*/ System.out.println(""); System.out.println("Pontuacao total de A = " +somaA ); System.out.println("Media de A = " + mediaA); System.out.println(""); System.out.println("Pontuacao total de B = " +somaB ); System.out.println("Media de B = " + mediaB); System.out.println(""); System.out.println("Pontuacao total de C = " +somaC); System.out.println("Media de C = " + mediaC); } } Nova dúvida: Tenho de implementar um método para aplicar restrições aos votos. Vou tentar exemplificar: Eleitor 1 [ A B C D] : 10 20 30 40 //voto correcto Eleitor 2 [ A B C D] : 20 20 30 40 //voto inválido pois a somadas votações excede 100 Podem dar-me um exemplo de como fazer este método e como o invocar no main? Link to comment Share on other sites More sharing options...
jarsantos Posted December 3, 2009 at 08:33 AM Report Share #298534 Posted December 3, 2009 at 08:33 AM ja estás a fazer essa validação quando fazes "votoa+votob+votoc>100" Agora o que não estás a verificar é se as votações são positivas. Conselho: Estas a programar, usa objectos, não programes Java há lá C. 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