fork download
  1. #include <stdio.h>
  2.  
  3. #define U_SIZE 11 // універсум 1..10
  4.  
  5. void printSet(int S[]) {
  6. printf("{ ");
  7. for (int i = 1; i <= 10; i++)
  8. if (S[i]) printf("%d ", i);
  9. printf("}\n");
  10. }
  11.  
  12. void complement(int S[], int R[]) {
  13. for (int i = 1; i <= 10; i++)
  14. R[i] = !S[i];
  15. }
  16.  
  17. void intersect(int A[], int B[], int R[]) {
  18. for (int i = 1; i <= 10; i++)
  19. R[i] = A[i] && B[i];
  20. }
  21.  
  22. void diff(int A[], int B[], int R[]) {
  23. for (int i = 1; i <= 10; i++)
  24. R[i] = A[i] && !B[i];
  25. }
  26.  
  27. int main() {
  28.  
  29. int A[U_SIZE] = {0}, B[U_SIZE] = {0}, C[U_SIZE] = {0};
  30. int Ap[U_SIZE], Bp[U_SIZE], ApC[U_SIZE], result[U_SIZE];
  31.  
  32. int a_vals[] = {1,2,3,5,6};
  33. int b_vals[] = {2,3,4,8,9};
  34. int c_vals[] = {3,4,5};
  35.  
  36. for (int i=0;i<5;i++) A[a_vals[i]] = 1;
  37. for (int i=0;i<5;i++) B[b_vals[i]] = 1;
  38. for (int i=0;i<3;i++) C[c_vals[i]] = 1;
  39.  
  40. // Доповнення
  41. complement(A, Ap);
  42. complement(B, Bp);
  43.  
  44. // A' ∩ C
  45. intersect(Ap, C, ApC);
  46.  
  47. // B' \ (A' ∩ C)
  48. diff(Bp, ApC, result);
  49.  
  50. printf("B' = ");
  51. printSet(Bp);
  52.  
  53. printf("A' = ");
  54. printSet(Ap);
  55.  
  56. printf("A' ∩ C = ");
  57. printSet(ApC);
  58.  
  59. printf("B' \\ (A' ∩ C) = ");
  60. printSet(result);
  61.  
  62. // Підрахунок потужності булеану (2^n)
  63. int n = 0;
  64. for (int i = 1; i <= 10; i++)
  65. if (result[i]) n++;
  66.  
  67. long long power = 1LL << n;
  68.  
  69. printf("Потужність булеану = %lld\n", power);
  70.  
  71. return 0;
  72. }
  73.  
Success #stdin #stdout 0s 5320KB
stdin
Standard input is empty
stdout
B' = { 1 5 6 7 10 }
A' = { 4 7 8 9 10 }
A' ∩ C = { 4 }
B' \ (A' ∩ C) = { 1 5 6 7 10 }
Потужність булеану = 32