Ordonner un tableau de char*, int, double, long, etc ...

Description

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.
  • %*%*%*%*%*%*%

%
  • vObjects

%
  • %*%*%*%*%*%*%

Codes Sources

A voir également

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.