Programme ELO

Ce programme codé en C++ permet de calculer le nouveau classement ELO de deux joueurs venant de s'affronter.

Cliquez ici pour le télécharger.

Voici le code source.

#include <iostream>
#include <cmath>

using namespace std;


int main()
{
	// anciens classements ELO de A et B
	int ancienEloA = 0;
	int ancienEloB = 0;
	// scores
	double scoreTheorique = 0;
	float scoreReel = 0;

	// nouveaux classements ELO de A et B
	int newEloA = 0;
	int newEloB = 0;

	// coefficient K
	int K = 0;

	// moyenne des ELO de A et B
	int moyenneElos = 0;


	cout << "Calculateur d'ELO" << endl;
	cout << "-----------------" << endl;
	cout <<endl;

	// demande l'entree de l'ELO de A
	cout<<"Ancien ELO de A (ex: 1200) :";
	cout << endl;
	cin >> ancienEloA;

    // demande l'entree de l'ELO de B
	cout<<"Ancien ELO de B (ex: 1200) :";
	cout <<endl;
	cin >> ancienEloB;

    // demande l'entree du score
    cout<< "Score (victoire de A sur B : 1 ;\
    victoire de B sur A : 0 ; partie \
    nulle : 0.5) :" <<endl;
    cin >> scoreReel;

    // calcule la moyenne des ELO de A et B
    moyenneElos= (ancienEloA+ancienEloB)/2;

    // calcule K
    if( moyenneElos < 2000 ) K = 30;
    else if( moyenneElos > 2400 ) K = 10;
    else K = 130 - (moyenneElos / 20);

    // calcule le score theorique
    scoreTheorique = 1/(1+ pow(10,((
    (double)(ancienEloB-ancienEloA))/400)));

    // calcule les nouveaux ELO de A et de B
    // (1-scoreReel) - (1-scoreTheorique)
    // = scoreTheorique - scoreReel
    newEloA= (int)(ancienEloA+
        K * (scoreReel-scoreTheorique));
    newEloB= (int)(ancienEloB+
        K * (scoreTheorique-scoreReel));

    // affiche les résultats
    cout << "Nouvel ELO de A = " << newEloA;
    cout <<endl;
    cout << "Nouvel ELO de B = " << newEloB;
    cout <<endl;

    system("PAUSE");


	return EXIT_SUCCESS;
}