|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jan 2009
Città: Trento
Messaggi: 81
|
[JAVA] Problema programma
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.
Codice:
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);
}
}
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
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 |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Jan 2009
Città: Trento
Messaggi: 81
|
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.. |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
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: Codice:
per ogni voto
per ogni candidato c nell'array candidati
se voto == c.num
c.nvoti++
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:31.


















