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; }