/*************************************************************************************************************************************/ /* */ /* T E S T D E P E R F O R M A N C E D E S T R I S : */ /* */ /* */ /* Author of '$xtKg/tri.02$K' : */ /* */ /* Jean-Francois COLONNA (LACTAMME, 20181226105121). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* I N T E R F A C E ' listG ' : */ /* */ /* */ /* :Debut_listG: */ /* :Fin_listG: */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D I R E C T I V E S S P E C I F I Q U E S D E C O M P I L A T I O N : */ /* */ /*************************************************************************************************************************************/ @define PRAGMA_CPP_____MODULE_NON_DERIVABLE /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* F I C H I E R S D ' I N C L U D E S : */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* F I C H I E R S D ' I N C L U D E S : */ /* */ /*************************************************************************************************************************************/ #include INCLUDES_MINI /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* P A R A M E T R E S : */ /* */ /*************************************************************************************************************************************/ #define NOMBRE_D_ELEMENTS \ SEIZE \ /* Nombre maximal d'elements dans le fichier. */ #define N_AU_CARRE \ VRAI \ /* Methode de tri par defaut. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* M A C R O S U T I L E S : */ /* */ /*************************************************************************************************************************************/ #define ACCES_LISTE(liste,index) \ ITb1(liste,INDX(index,PREMIER_ELEMENT_D_UN_FICHIER)) \ /* Acces a un element des listes. */ #define TEST_DU_TRI(initialisation,verification) \ Bblock \ DoIn(index,PREMIER_ELEMENT_D_UN_FICHIER,LSTX(PREMIER_ELEMENT_D_UN_FICHIER,nombre_d_elements),I) \ Bblock \ EGAL(ACCES_LISTE(Liste_a_trier,index),initialisation); \ EGAL(ACCES_LISTE(Liste_des_index,index),index); \ /* Initialisation de la liste a trier. */ \ Eblock \ EDoI \ \ TRI_D_UNE_LISTE_QUELCONQUE(Liste_a_trier \ ,Liste_des_index \ ,PREMIER_ELEMENT_D_UN_FICHIER \ ,LSTX(PREMIER_ELEMENT_D_UN_FICHIER,nombre_d_elements) \ ,FAUX \ ,N_au_carre \ ,ACCES_LISTE \ ); \ /* L'argument "tri_auto=FAUX" a ete introduit le 20170829185927... */ \ \ DoIn(index,PREMIER_ELEMENT_D_UN_FICHIER,LSTX(PREMIER_ELEMENT_D_UN_FICHIER,nombre_d_elements),I) \ Bblock \ Test(IFNE(ACCES_LISTE(Liste_des_index,ACCES_LISTE(Liste_des_index,index)),verification)) \ Bblock \ PRINT_ERREUR("erreur de tri"); \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ Eblock \ EDoI \ Eblock \ /* Test du tri... */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* T E S T D E P E R F O R M A N C E D E S T R I S : */ /* */ /*************************************************************************************************************************************/ BCommande(nombre_d_arguments,arguments) /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock DEFV(Int,INIT(nombre_d_elements,NOMBRE_D_ELEMENTS)); /* Nombre d'elements a trier. */ DEFV(Logical,INIT(N_au_carre,N_AU_CARRE)); /* Methode de tri par defaut. */ /*..............................................................................................................................*/ EGAL(TRI_D_UNE_LISTE_QUELCONQUE_VERSION_N_AU_CARRE_____editer_le_message_de_duree_excessive,FAUX); EGAL(chronometrer_la_commande_courante,VRAI); GET_ARGUMENTS_(nombre_d_arguments ,BLOC(GET_ARGUMENT_L("tri_N2=""N_carre=""N_au_carre=""N_AU_CARRE=""N2=",N_au_carre); GET_ARGUMENT_N("tri_NlogN=""NlN=""N_log_N=""N1=",N_au_carre); GET_ARGUMENT_I("nombre=""n=",nombre_d_elements); GET_ARGUMENT_L("message_N_carre=""message_N_au_carre=""message_N_AU_CARRE=""mN2=" ,TRI_D_UNE_LISTE_QUELCONQUE_VERSION_N_AU_CARRE_____editer_le_message_de_duree_excessive ); /* Arguments introduits le 20181227122000... */ ) ); begin_nouveau_block Bblock DEFV(Int,INIT(index,UNDEF)); /* Index... */ DEFV(Float,DdTb1(POINTERf,Liste_a_trier,nombre_d_elements,ADRESSE_NON_ENCORE_DEFINIE)); DEFV(Float,DdTb1(POINTERf,Liste_des_index,nombre_d_elements,ADRESSE_NON_ENCORE_DEFINIE)); MdTb1(Liste_a_trier,nombre_d_elements,Float,ADRESSE_NON_ENCORE_DEFINIE); MdTb1(Liste_des_index,nombre_d_elements,Float,ADRESSE_NON_ENCORE_DEFINIE); TEST_DU_TRI(FLOT(SOUS(nombre_d_elements,index)),FLOT(ADD2(index,PREMIER_ELEMENT_D_UN_FICHIER))); /* La liste est initialisee de facon a etre completement "a l'envers"... */ FdTb1(Liste_des_index,nombre_d_elements,Float,ADRESSE_NON_ENCORE_DEFINIE); FdTb1(Liste_a_trier,nombre_d_elements,Float,ADRESSE_NON_ENCORE_DEFINIE); Eblock end_nouveau_block RETU_Commande; Eblock ECommande