/*************************************************************************************************************************************/
/* */
/* 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");
}
}