/*************************************************************************************************************************************/ /* */ /* T E S T D E L A F O N C T I O N ' MODU(...) ' : */ /* */ /* */ /* Author of '$xtKg/MODU$K' : */ /* */ /* Jean-Francois COLONNA (LACTAMME, 20221204120955). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 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 : */ /* */ /*************************************************************************************************************************************/ #include INCLUDES_BASE /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* P A R A M E T R E S : */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* M A C R O S U T I L E S : */ /* */ /*************************************************************************************************************************************/ #define Xmin \ 0 #define Xmax \ 779 #define PRINT(valeur,origine,extremite) \ Bblock \ DEFV(Int,INIT(x,valeur)); \ DEFV(Int,INIT(y,FiMODU(x,origine,extremite))); \ \ CAL2(Prin4("%+d --> %+d dans [%+d,%+d]\n",x,y,origine,extremite)); \ /* On notera que : */ \ /* */ \ /* CAL2(Prin4("%+d --> %+d dans [%+d,%+d]\n",valeur,x,origine,extremite)); */ \ /* */ \ /* ne fonctionne pas correctement lorsque 'valeur' est une constante negative (-1 par */ \ /* exemple qui donne alors +4294967295 lors de l'edition precedente avec 'valeur' au lieu */ \ /* de 'x'...). */ \ /* */ \ /* La solution est donc de passer par un 'Int' intermediaire. Mais cela a conduit a */ \ /* remplacer 'MODU(...)' par 'FiMODU(...)' afin d'eviter les messages : */ \ /* */ \ /* warning: integer overflow in expression of type 'long int' */ \ /* results in '-2' [-Woverflow] */ \ /* ((long int)0x7fffffffffffffff)- ((long int)0x8000000000000001))) */ \ /* xxxx */ \ /* xxxx */ \ /* xxxx */ \ /* xxxx */ \ /* */ \ /* qui disparaissent si l'on remet ''valeur' a la place de 'x', ce qui montre que le */ \ /* '$Cc' calcul les expressions constantes... */ \ Eblock /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* T E S T D E L A F O N C T I O N ' MODU(...) ' : */ /* */ /*************************************************************************************************************************************/ BCommande(nombre_d_arguments,arguments) /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ GET_ARGUMENTS_(nombre_d_arguments ,BLOC(VIDE;) ); PRINT(PREX(Xmin),Xmin,Xmax); PRINT(NEUT(Xmin),Xmin,Xmax); PRINT(SUCX(Xmin),Xmin,Xmax); printf("\n"); PRINT(PREX(Xmax),Xmin,Xmax); PRINT(NEUT(Xmax),Xmin,Xmax); PRINT(SUCX(Xmax),Xmin,Xmax); printf("\n"); PRINT(0,0,1); PRINT(-1,0,1); PRINT(+1,0,1); printf("\n"); PRINT(0,MOINS_L_INFINI,INFINI); PRINT(-1,MOINS_L_INFINI,INFINI); PRINT(+1,MOINS_L_INFINI,INFINI); printf("\n"); PRINT(0,1,128); PRINT(1,1,128); PRINT(128,1,128); PRINT(129,1,128); PRINT(512,1,128); RETU_Commande; Eblock ECommande