Un article de Wikipédia, l'encyclopédie libre.
// ********************************************************************************
//
// djobot, bot pour wikipédia. Sous licence gpl au nom de djo0012.
//
// l'utilisation de ce bot est sous la responsabilité de son utilisateur,
// en aucun cas je ne peut être tenu responsable des actions effectuer avec
// ce bot par d'autre personne que moi-même.
//
// je ne garantis en aucun cas le bon fonctionnement de ce code.
//
// fichier alphabet_classement.cpp version 1.1
//
// classement par ordre alphabétique. conserve les donnée lier au niveau de
// classement. (ex.: si l'on classe un article par les titre de niveaux 2 le
// texte en dessous de chaque titre restera lier et seras placé dans le meme
// ordre que les titre.
//
// ajout dans les version précédente:
// v 1.1:
// classé par ordre alpha meme si il y a des accents dans les mots è classé
//
// ********************************************************************************
#include"alphabet_classement.h"
void alpha_class(string data[][2], const int nb)
{
string tab[nb][3];
bool finish=true;
for(int i=0;i<nb;++i)
{
tab[i][0]=removeAccent(data[i][0]);
tab[i][1]=data[i][0];
tab[i][2]=data[i][1];
}
while(finish)
{
finish=false;
for(int i=0;i<nb||tab[i+1][0]=="";++i)
{
if(strcmp(tab[i][0].c_str(),tab[i+1][0].c_str())<0)
{
for(int j=0;j<3;++j)
{
swap(tab[i][j],tab[i+1][j]);
}
finish=true;
}
}
}
for(int i=0;i<nb;++i)
{
data[i][0]=tab[i][1];
data[i][1]=tab[i][2];
}
}
string removeAccent(string mots)
{
for(int i=0;i<mots.length();++i)
{
if((int)(unsigned char)mots[i]>127)
{
switch((int)(unsigned char)mots[i])
{
case 130: //e
case 136:
case 137:
case 138:
case 144:
case 156:
mots[i]='e';
break;
case 131: //a
case 132:
case 133:
case 134:
case 142:
case 143:
case 160:
case 166:
mots[i]='a';
break;
case 147: //o
case 148:
case 149:
case 153:
case 162:
case 167:
mots[i]='o';
break;
case 129: //u
case 150:
case 151:
case 154:
case 163:
mots[i]='u';
break;
case 128: //c
case 135:
case 155:
mots[i]='c';
break;
case 139: //i
case 140:
case 141:
case 161:
mots[i]='i';
break;
case 145: //ae
case 146:
{
string tempo;
tempo=mots.substr(i);
mots=mots.substr(1);
tempo[i]='a';
mots=tempo+'e'+mots;
}
break;
case 152: //y
case 157:
mots[i]='y';
break;
case 158: //r
mots[i]='r';
break;
case 159: //f
mots[i]='f';
break;
case 164: //n
case 165:
mots[i]='n';
break;
}
}
mots[i]=toupper(mots[i]);
}
return mots;
}