#include #include long long** creerTriangle(int n) { long long** tr; tr = calloc(n, sizeof(long long*)); if (tr != NULL) { long long* m = (long long*) calloc((n * (n + 1)) / 2, sizeof(long long)); tr[0] = m; m++; if (m != NULL) { for (int l = 1; l < n; l++) { tr[l] = m; m += (l + 1); } } else { free(tr); tr = NULL; } } return tr; } void detruireTriangle(long long** tr) { if (tr != NULL) { if (tr[0] != NULL) { free(tr[0]); tr[0] = NULL; } free(tr); tr = NULL; } } long long** creerTrianglePascal(int n) { long long** tr = creerTriangle(n); if (tr != NULL) { tr[0][0] = 1; for (int l = 1; l < n; l++) { tr[l][0] = 1; tr[l][l] = 1; } for (int l = 2; l < n; l++) { for (int c = 1; c < l; c++) { tr[l][c] = tr[l - 1][c] + tr[l - 1][c - 1]; } } } return tr; } void afficherTriangle(long long** tr, int n) { for (int l = 0; l < n; l++) { for (int c = 0; c <= l; c++) { printf("%5lld", tr[l][c]); } printf("\n"); } } int main(void) { int n = 15; printf("Taille du triangle : %d\n", n); long long** tr = creerTrianglePascal(n); if (tr != NULL) { afficherTriangle(tr, n); tr = NULL; } detruireTriangle(tr); tr = NULL; return 0; }