Utilisateur:Djobot/alphabet classement.cpp
Apparence
// ******************************************************************************** // // 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; }