/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C A L C U L   D U   T R I A N G L E   D E   P A S C A L  :                                                                 */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xtc/TriangleDePascal.01$c' :                                                                                   */
/*                                                                                                                                   */
/*                    Jean-Francois Colonna (LACTAMME, 20140728110643).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

#include  "INCLUDES.01.I"

extern    double    log10();

#define   DIMENSION                                                                                                                     \
                    64

#define   PARITE                                                                                                                        \
                    2
int       EditerParite=VRAI;
                                        /* Afin de pouvoir le triangle de Sierpinski...                                              */

#define   TABULATION                                                                                                                    \
                    " "
#define   SEPARATEUR                                                                                                                    \
                    TABULATION
#define   DIVISIBLE                                                                                                                     \
                    " "
#define   NON_DIVISIBLE                                                                                                                 \
                    "+"

main()
          {
          int                 ligne,colonne;
          long      int       triangle[DIMENSION][DIMENSION];
                                        /* Definition du triangle de Pascal...                                                       */
          long      int       maximum=-1;
          int                 format;
                                        /* Afin de tabuler correctement le triangle de Pascal...                                     */

          for       (ligne=0 ; ligne<DIMENSION ; ligne++)
                    {
                    for       (colonne=0 ; colonne<DIMENSION ; colonne++)
                              {
                              if        ((colonne == 0) || (ligne == colonne))
                                        {
                                        triangle[ligne][colonne] = 1;
                                        /* Initialisation du triangle de Pascal...                                                   */
                                        }
                              else
                                        {
                                        triangle[ligne][colonne] = 0;
                                        /* Initialisation du triangle de Pascal...                                                   */
                                        }
                              }
                    }

          for       (ligne=0 ; ligne<DIMENSION ; ligne++)
                    {
                    for       (colonne=0 ; colonne<DIMENSION ; colonne++)
                              {
                              if        ((colonne > 0) && (colonne < ligne) && (ligne > 1))
                                        {
                                        triangle[ligne][colonne] = triangle[ligne-1][colonne-1] + triangle[ligne-1][colonne];
                                        /* Calcul du triangle de Pascal...                                                           */

                                        maximum = MAX2(maximum,triangle[ligne][colonne]);
                                        /* Recherche de la valeur maximale dans le triangle de Pascal afin de bien tabuler sa        */
                                        /* sortie ci-apres...                                                                        */
                                        }
                              else
                                        {
                                        }
                              }
                    }

          format = (((int)log10((double)maximum))+1);

          for       (ligne=0 ; ligne<DIMENSION ; ligne++)
                    {
                    if        (EditerParite == VRAI)
                              {
                              for       (colonne=0 ; colonne<(DIMENSION-ligne) ; colonne++)
                                        {
                                        printf("%s",TABULATION);
                                        }
                              }
                    else
                              {
                              }

                    for       (colonne=0 ; colonne<DIMENSION ; colonne++)
                              {
                              if        (colonne <= ligne)
                                        {
                                        if        (EditerParite == VRAI)
                                                  {
                                                  printf("%s%s"
                                                        ,COND((triangle[ligne][colonne]%PARITE)==0,DIVISIBLE,NON_DIVISIBLE)
                                                        ,COND(colonne<ligne,SEPARATEUR,"")
                                                         );
                                                  }
                                        else
                                                  {
                                                  printf("%*ld ",format,triangle[ligne][colonne]);
                                                  }
                                        }
                              else
                                        {
                                        }
                              }

                    printf("\n");
                    }

          }



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