PDA

View Full Version : [JAVA] Problema programma


Cory
27-04-2009, 16:51
Ciao a tutti! Sto scrivendo un programma che simuli delle elezioni. Il funzionamento prevede la presenza di un Urna che genera casualmente i voti che vengono assegnati ai vari candidati. Ora, sulla prima parte ci sono, solamente ho qualche difficioltà a implementare la funzione che dovrebbe assegnare ai vari candidati i voti ricevuti. Vi copio qui il codice che ho scritto finora.

import java.util.*;

class Urna{

int nvotanti=10;
int voto;
int ncandidati=3;

public void checkVoto(int voto, Candidato c){

if(voto==c.num){

c.nvoti++;
}

}

public Urna(){

Random r=new Random(System.currentTimeMillis()/27);
for(int i=0; i<nvotanti;i++){
voto=r.nextInt(ncandidati)+1;
System.out.println("è uscito il voto " + voto);
checkVoto(voto, Candidato c);
}
}
}



class Candidato{
String nome;
int nvoti;
int num;

public void checkVoto(int voto){

if(voto==this.num){
this.nvoti++;
}

}

public Candidato(String nome, int num){

this.num=num;
int voto=0;
this.nome=nome;
}
}


class Elezioni {

Elezioni p=new Elezioni();

public static void main(String [] args){

Urna x=new Urna();
Candidato uno=new Candidato("Marco",1);
Candidato due=new Candidato("Andrea",2);
Candidato tre=new Candidato("Stefano",3);

uno.checkVoto(x.voto);
due.checkVoto(x.voto);
tre.checkVoto(x.voto);

System.out.println(uno.nvoti);
System.out.println(due.nvoti);
System.out.println(tre.nvoti);
}

}

grazie in anticipo a chi si prenderà la sbatta di rispondere :)

PGI-Bis
27-04-2009, 17:07
Direi che il tuo algoritmo ha perso qualche pezzo.

L'idea generale sembra essere questo:

Data un set di candidati, l'urna, per ogni voto, assegna il voto al candidato corrispondente.

I voti li crea urna. E' un po' strano ma tutto è possibile.

Dunque hai l'insieme dei candidati, lo passi all'urna, l'urna per ogni voto che crea determina a quale dei candidati nel set corrisponda e a quel punto incrementa il valore del campo nvoti di quel candidato.

Non incollo codice perchè mi sa tanto di esercizio scolastico e non è bello.

Ps.: non è bello dare la soluzione, esercizio, scuola, domande e dubbi sono tutti bellissimi :D:

Cory
27-04-2009, 17:17
diciamo che si tratta di un tentativo di trsposizione di un esercizio che avevo fatto in C++ tempo addietro.

l'idea è proprio come l'hai descritaa, solo non capisco come passare i candidati all'urna!

boh..

PGI-Bis
27-04-2009, 17:30
Un candidato è un'istanza, come uno, due e tre. Più candidati o sono un array di Candidato o una collezione. Ad esempio:

Candidato[] candidati = { uno, due, tre };

oppure:

java.util.LinkedList<Candidato> candidati = new java.util.LinkedList<Candidato>();
candidati.add(uno);
candidati.add(due);
candidati.add(tre);

Puoi passarli all'urna in costruzione. Se adesso il costruttore di urna è:

public Urna() {...}

Diventerà (nel caso dell'array):

public Urna(Candidato[] candidati) {...

Nel metodo main prima crei i candidati, poi li impacchetti in un array, poi crei l'urna passandogli quell'array.

A questo punto nel costruttore di Urna hai un insieme di candidati. Avendo i candidati puoi dire:

per ogni voto
per ogni candidato c nell'array candidati
se voto == c.num
c.nvoti++