Methode de vote condorcet sous java

Soyez le premier à donner votre avis sur cette source.

Vue 5 857 fois - Téléchargée 363 fois

Description

le programme calcule selon la méthode de Condorcet qui est le choix d'un candidat (l'élu) à partir d'une élection ..
elle procède en comparant les candidats deux à deux : c'est à dire par exemple on compte combien de fois 'a' est élu avant 'b' et combien 'b' est élu avant 'a' ...etc
il prend en paramètre:
le nombre de candidat;
le nombre de personnes qui votent;
les noms des candidats: des caractère {'a', 'b', ....}
exemple :
a a a c c b e
b d d b d c c
c b b d b d d
d e e e a a b
e c c a e e a

est la matrice de vote;

Source / Exemple :


import java.util.Scanner;

public class meth_condorcet {
	static int max=0;
	static int cmpChar;
	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		System.out.println("la methode de condoncet");
		System.out.println();
		System.out.println("entrer le nombre de candidats :");
		System.out.println("******************************");
		int cand=s.nextInt();
		System.out.println("entrer le nombre de personnes qui votent :");
		System.out.println("******************************************");
		int per=s.nextInt();
		char t_cand[]=new char [cand] ;
		int t_comp[]=new int[cand];
		char t_vote[][]=new char[cand][per];
		int t_three[][]=new int[cand][cand];
		System.out.println("entrer les noms des candidats :");
		System.out.println("*****************************");
		for (int i=0; i<cand;i++ ){
			t_cand[i]=s.next().charAt(0);
		}
		for (int i=0; i<cand;i++ ){
			System.out.print(t_cand[i]+" 	");
		}
		System.out.println();
		System.out.println("la matrice de vote :");
		System.out.println("********************");
		for (int c=0; c<cand;c++){
			for (int p=0;p<per; p++){
				t_vote[c][p]=s.next().charAt(0);
			}
		}
		//affichage de vote :
		for (int c=0; c<cand;c++){
			for (int p=0;p<per; p++){
				System.out.print(t_vote[c][p]+" 	");
			}
			System.out.println();
		}
		//---------------------------------------------------------------------------
		//calcule de la matrice de choix:		
		int ps1 = 0;int ps2 = 0;
		
		for (int p=0;p<per; p++){			
			for(int cc=0;cc<cand;cc++){
				for(int ccc=0; ccc<cand ;ccc++){
					for(int i=0; i<cand;i++){
						if (t_cand[cc]==t_vote[i][p]){						
						ps1=i;
						}
					}
					for(int i=0; i<cand;i++){						
						if(t_cand[ccc]==t_vote[i][p]){
							ps2=i;
						}
					}	
						if(ps1<=ps2){
							t_three[cc][ccc]=t_three[cc][ccc]+1;
						}
					}					
				}
			}		
		
		
		//-----------------------------------------------------------------------------
		/*

  • matrice de teste
a a a c c b e b d d b d c c c b b d b d d d e e e a a b e c c a e e a
  • */
//affichage des resultats: System.out.println("la matrice de choix:"); System.out.println("----------------------"); for(int i=0;i<cand;i++){ for(int j=0;j<cand ;j++){ System.out.print(t_three[i][j]+" "); } System.out.println(); } //le calcule du choix social for(int i=0;i<cand;i++){ for(int j=0;j<cand;j++){ t_comp[i]=t_comp[i]+t_three[i][j]; } t_comp[i]=t_comp[i]-per; if(max<t_comp[i]){ max=t_comp[i]; cmpChar=i; } } System.out.println("le choix social est: "+t_cand[cmpChar]); } }

Conclusion :


voilà un exemple d'exécution de la méthode Condorcet:

la methode de condoncet

entrer le nombre de candidats :

5
entrer le nombre de personnes qui votent :

7
entrer les noms des candidats :

a b c d e
a b c d e
la matrice de vote :

a a a c c b e
b d d b d c c
c b b d b d d
d e e e a a b
e c c a e e a
a a a c c b e
b d d b d c c
c b b d b d d
d e e e a a b
e c c a e e a
la matrice de choix:
----------------------
7 3 3 3 5
4 7 4 3 6
4 3 7 5 4
4 4 2 7 6
2 1 3 1 7
le choix social est: b

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
47
Date d'inscription
vendredi 7 mars 2008
Statut
Membre
Dernière intervention
24 juillet 2011

certainement, mais j'ai fais comme ça pour facilité la tache au personne débutant je veux dire pour qu'il comprennent l'algorithme c'est tout
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
366
L'algorithme fonctionne mais, il est regrettable que le côté conception ait été complètement négligé, surtout que tu as fait trois sources qui traitent de la même problématique, certaines classes auraient pu te resservir.

De plus, tu ne respectes pas les conventions de nommage en Java.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.