/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        G E N E R A T I O N   D E   V A L E U R S   C O R R E S P O N D A N T   A                                                  */
/*        T O U S   L E S   C O U P L E S   D E   N O M B R E S   P O S S I B L E S  :                                               */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xci/valeurs_coup$K' :                                                                                          */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 20000125153619).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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  :                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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  :                                                                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xci/sequence.01.I"

#include  xci/valeurs.01.I"

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        M A C R O S   U T I L E S  :                                                                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xci/valeurs.02.I"

#define   EDITER_UNE_VALEUR(valeur)                                                                                                     \
                    Bblock                                                                                                              \
                    Test(IFLE(numero_d_image,derniere_image))                                                                           \
                         Bblock                                                                                                         \
                         CAL2(Prin2(Cara(chain_Aconcaten5(INTRODUCTION_FORMAT,valeurs_signees,".*",format_d_edition,"\n"))              \
                                   ,NOMBRE_DE_DECIMALES_EFFECTIF(nombre_de_decimales)                                                   \
                                   ,MULTIPLE_DE(ENTIER_FLOTTANT(FLOT(valeur)))                                                          \
                                    )                                                                                                   \
                              );                                                                                                        \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                                                                                                                                        \
                    INCR(numero_d_image,pas_des_images);                                                                                \
                                        /* Numero de la prochaine image...                                                           */ \
                    Eblock                                                                                                              \
                                        /* Procedure d'edition conditionnelle.                                                       */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        G E N E R A T I O N   D E   V A L E U R S   C O R R E S P O N D A N T   A                                                  */
/*        T O U S   L E S   C O U P L E S   D E   N O M B R E S   P O S S I B L E S  :                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     DEFV(Int,INIT(premiere_image,PREMIERE_IMAGE));
                                        /* Numero de la premiere image,                                                              */
     DEFV(Int,INIT(derniere_image,DERNIERE_IMAGE));
                                        /* Numero de la derniere image.                                                              */
     DEFV(Int,INIT(numero_d_image,UNDEF));
                                        /* Numero de l'image courante.                                                               */
     DEFV(Int,INIT(pas_des_images,PAS_DES_IMAGES));
                                        /* Pas de passage d'un numero d'image a une autre.                                           */

#include  xci/valeurs.03.I"
     /*..............................................................................................................................*/
     GET_ARGUMENTS_(nombre_d_arguments
                   ,BLOC(GET_ARGUMENT_I("premiere=""p=""D=",premiere_image);
                         GET_ARGUMENT_I("derniere=""d=""A=",derniere_image);
                         GET_ARGUMENT_I("pas=",pas_des_images);

                         PROCESS_ARGUMENTS_DE_PARAMETRAGE_DE_LA_GENERATION_DE_SUITE_DE_VALEURS_1;
                                        /* Cette procedure fut introduite le 20061226185734...                                       */
                         )
                    );

     Test(IFLE(premiere_image,derniere_image))
          Bblock
          DEFV(Int,INIT(premier_element_courant,UNDEF));
          DEFV(Int,INIT(second_element_courant,UNDEF));
                                        /* Numero des elements courants d'un couple.                                                 */
          DEFV(Int,INIT(premier_element,premiere_image));
          DEFV(Int,INIT(dernier_element,UNDEF));
          DEFV(Float,INIT(dernier_element_flottant
                         ,ADD2(ADD2(FLOT(premiere_image)
                                   ,aCOMP(RACINE_REELLE_p_DE_L_EQUATION_DU_SECOND_DEGRE(FU
                                                                                       ,FU
                                                                                       ,NEGA(GRO2(MOIT(FLOT(NBRE(premiere_image
                                                                                                                ,derniere_image
                                                                                                                 )
                                                                                                            )
                                                                                                       )
                                                                                                  )
                                                                                             )
                                                                                        )
                                          )
                                    )
                              ,FLOT(pas_des_images)
                               )
                          )
               );
                                        /* Numero du premier et du dernier element. On notera que le numero du dernier element       */
                                        /* est obtenu en resolvant l'equation du second degre :                                      */
                                        /*                                                                                           */
                                        /*                   x(x+1)     N                                                            */
                                        /*                  -------- = ---                                                           */
                                        /*                     2        2                                                            */
                                        /*                                                                                           */
                                        /* soit :                                                                                    */
                                        /*                                                                                           */
                                        /*                   2         N                                                             */
                                        /*                  x  + x - 2--- = 0                                                        */
                                        /*                             2                                                             */
                                        /*                                                                                           */
                                        /* ou 'N' est le nombre de nombres a editer (il est divise par 2 puisque l'on s'interesse    */
                                        /* a des couples...).                                                                        */
                                        /*                                                                                           */
                                        /* On notera que l'on ne peut utiliser 'TRMU(...)' car il fait un 'INTE(...)' via            */
                                        /* 'INDX(...)'.                                                                              */

          EGAL(dernier_element,ADD2(INTE(dernier_element_flottant),COND(fEST_ENTIER(dernier_element_flottant),ZERO,pas_des_images)));
                                        /* Afin de pouvoir generer le bon nombre de nombres....                                      */

          EGAL(numero_d_image,premiere_image);

          DoIn(premier_element_courant,premier_element,dernier_element,pas_des_images)
               Bblock
               DoIn(second_element_courant,SUCC(premier_element_courant),dernier_element,pas_des_images)
                    Bblock
                    EDITER_UNE_VALEUR(premier_element_courant);
                                        /* Edition du premier element du couple courant.                                             */
                    EDITER_UNE_VALEUR(second_element_courant);
                                        /* Edition du second element du couple courant.                                              */
                    Eblock
               EDoI
               Eblock
          EDoI
          Eblock
     ATes
          Bblock
          PRINT_ERREUR("la relation d'ordre stricte ('premier < dernier') n'est pas respectee");
          Eblock
     ETes

     RETU_Commande;
     Eblock
ECommande



Copyright © Jean-François COLONNA, 2019-2024.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2019-2024.