Ce petit bout de code permet de mettre en ordre croissant ou décroissant des tableaux de
signed/unsigned char*
signed/unsigned char
signed/unsigned int
signed/unsigned long
double
float
long double
signed/unsigned short
long signed/unsigned int
etc ...
etc ...
etc ...
Source / Exemple :
/*
- Fichier main.cpp, exemple avec un tableau de char*
- /
#include <iostream> // cout/endl
using namespace std;
#include <memory.h> // memset()/memcpy()
#include <stdlib.h> // system()
#include "vsort.h" // order()/disorder()
#include <windows.h> // GetTickCount()
int main() {
int i=0;
char** listOfItem=0;
DWORD dwStart=0;
DWORD dwEnd=0;
// allocations de mémoire
listOfItem = new char*[15]; // max de 15 éléments
for (i=0; i<15; i++) {
listOfItem[i] = new char[255]; // max de 255 caractères par élément
memset(listOfItem[i], 0, 255); // init à 0
}
// assignation des items
memcpy(listOfItem[0], "listOfItem", 10);
memcpy(listOfItem[1], "memset", 6);
memcpy(listOfItem[2], "new", 3);
memcpy(listOfItem[3], "char", 4);
memcpy(listOfItem[4], "for", 3);
memcpy(listOfItem[5], "listOfItem = new char*[15];", 27);
memcpy(listOfItem[6], "for (i=0; i<15; i++) {", 22);
memcpy(listOfItem[7], "listOfItem[i] = new char[255];", 30);
memcpy(listOfItem[8], "int i=0;", 8);
memcpy(listOfItem[9], "return 0;", 9);
memcpy(listOfItem[10], "using namespace std;", 20);
memcpy(listOfItem[11], "#include <memory.h>", 19);
memcpy(listOfItem[12], "int main() {", 12);
memcpy(listOfItem[13], "#include 'vstrlwrupr.h'", 23);
memcpy(listOfItem[14], "#include 'vsort.h'", 18);
// affichage d'information
cout << "Liste des items avant classement" << endl << endl;
// listing des items
for (i=0; i<15; i++){
cout << i << ") " << listOfItem[i] << endl;
}
// Fin du listing
cout << endl << "Fin de la liste" << endl << endl;
// Fait une pause
system("pause");
// Affichage d'information
cout << endl << "Liste des items apres classement en ordre alpha" << endl << endl;
dwStart = GetTickCount();
// Classe en ordre alpha
if ( order(listOfItem, 14) > 0 ) { // Si plus grand que zéro, aucune erreur
dwEnd = GetTickCount();
// Listing des items après classement
for (i=0; i<15; i++) {
cout << i << ") " << listOfItem[i] << endl;
}
// Fin du listing
cout << endl << "Fin de la liste" << endl << endl;
// Affichage du temp d'execution
cout << "Temp d'execution du classement: " << (long)(dwEnd-dwStart) << endl << endl;
}
else { // Plus petit que zéro, erreur
cout << "Erreur lors du classement" << endl << endl;
}
// Fait une pause
system("pause");
// Affichage d'information
cout << endl << "Liste des items apres classement en deordre alpha" << endl << endl;
dwStart = GetTickCount();
// Classe en ordre alpha
if ( disorder(listOfItem, 14) > 0 ) { // Si plus grand que zéro, aucune erreur
dwEnd = GetTickCount();
// Listing des items après classement
for (i=0; i<15; i++) {
cout << i << ") " << listOfItem[i] << endl;
}
// Fin du listing
cout << endl << "Fin de la liste" << endl << endl;
// Affichage du temp d'execution
cout << "Temp d'execution du classement: " << (long)(dwEnd-dwStart) << endl << endl;
}
else { // Plus petit que zéro, erreur
cout << "Erreur lors du classement" << endl << endl;
}
// Libère la mémoire
for (i=0; i<15; i++ ) {
delete [] listOfItem[i];
}
delete [] listOfItem;
// Fait une pause
//system("pause");
// Fin du programme
return 0;
}
Conclusion :
Créé et testé avec VC++ 6 sous Windows 2000 Pro seulement.
%
%
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.