Advertisement
ForcaDz

EXO4

May 8th, 2023
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.23 KB | None | 0 0
  1.  
  2. /*************************************/
  3. /* NOM : mon_nom PRENOM : mon_prenom */
  4. /*************************************/
  5.  
  6. /* Ecrire un programme qui calcule et affiche le triangle de pascal.
  7.  
  8.  Celui-ci est definie de la maniere suivante :
  9.  
  10.  soient p et n, deux entiers positifs avec p<=n, le nombre situe
  11.  dans la colonne p du triangle (en comptant a partir de 0 les colonnes)
  12.  et la ligne n (en comptant a partir de 0 les lignes) indique le nombre
  13.  de combinaisons possibles de p elements dans un ensemble a n elements.
  14.  
  15.  Ce nombre de combinaisons est defini par C(n,p) = n! / ( p! (n-p)! ),
  16.  ou x! indique le factoriel de x.
  17.  
  18.  Le programme calcule et affiche tous les elements du triangle pour n<=N,
  19.  avec N donne pas l'utilisateur. Les combinaisons sur une meme ligne seront
  20.  separees par une tabulation.
  21.  
  22.  Exemple : si N=5, le triangle affiche sera :
  23.  
  24.  1
  25.  1  1
  26.  1  2   1
  27.  1  3   3   1
  28.  1  4   6   4   1
  29.  1  5   10  5   5   1  
  30.  
  31.  */
  32.  
  33. #include <stdio.h>
  34. #include <stdlib.h>
  35.  
  36. // Ecrire une fonction <fact> qui calcule le factoriel d'un entier <x>
  37. // passe en parametre d'entree et renvoie ce factoriel en sortie.
  38. int fact(int x)
  39. {
  40.     int i;
  41.     int res = 1;
  42.  
  43.     if(x == 0)
  44.     return 1;
  45.  
  46.     for( i = 1 ; i <= x ; i++ )
  47.     {
  48.         res = res * i;
  49.     }
  50.  
  51.     return res;
  52.    
  53. }
  54.  
  55. // Ecrire une fonction <combinaisons> qui calcule le nombre de combinaisons
  56. // possibles de <p> elements dans un ensemble a <n> elements, puis renvoie
  57. // ce nombre en sortie ; <p> et <n> seront passees en parametres d'entree.
  58. int combinaisons(int n , int p)
  59. {
  60.     int x = n-p;
  61.  
  62.     return fact(n) / ( fact(p) * fact(x));
  63.    
  64. }
  65.  
  66. // Ecrire une procedure <affiche_triangle> qui calcule et affiche le triangle
  67. // de Pascal pour tous n<=N, N fourni en parametre d'entree.
  68. void affiche_triangle(int N)
  69. {
  70.     int n , p;
  71.  
  72.     for( n = 0 ; n <= N ; n++ )
  73.     {
  74.         for(p = 0 ; p <=n ; p++)
  75.         {
  76.             printf("%d\t",combinaisons(n,p));
  77.         }
  78.         printf("\n");
  79.     }
  80.  
  81. }
  82.  
  83. // Completer la fonction principale
  84. int main()
  85. {
  86.     int N;
  87.    
  88.     // Saisie du nombre <N> par l'utilisateur ;
  89.     // attention a verifier si celui-ci est bien positif.
  90.    
  91.     printf("Saisir N : ");
  92.     scanf("%d",&N);
  93.  
  94.  
  95.    
  96.     if (N > 0)
  97.     {
  98.         affiche_triangle(N);
  99.     }
  100.     else
  101.     {
  102.         printf("N est negatif\n");
  103.     }
  104.    
  105.    
  106.    
  107.     return 0;
  108. }
  109.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement