Jump to content

[dúvida] Programa para contagem de votos


GPumas
 Share

Recommended Posts

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

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

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

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

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

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
 Share

×
×
  • 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.