Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #define UNSIGNED_INT_SIZE (sizeof(unsigned int))
- #define SET_SIZE 3
- unsigned size(int A[], unsigned n)
- {
- return (n * sizeof(int) * 8);
- }
- int contains(unsigned a[], unsigned n, unsigned k)
- {
- if (a[k / UNSIGNED_INT_SIZE] & 1 << (k % UNSIGNED_INT_SIZE))
- return 1;
- else
- return 0;
- }
- void add(int a[], int n, int k)
- {
- a[k / UNSIGNED_INT_SIZE] |= 1 << (k % UNSIGNED_INT_SIZE);
- }
- void Remove(int a[], int n, int k)
- {
- a[k / UNSIGNED_INT_SIZE] &= ~(1 << (k % UNSIGNED_INT_SIZE));
- }
- void Union(int a[], int b[], int c[], int n)
- {
- for (int i = 0; i < n; i++)
- {
- c[i] = a[i] | b[i];
- }
- }
- void subtract(int a[], int b[], int c[], int n)
- {
- for (int i = 0; i < n; i++)
- {
- c[i] = a[i] ^ b[i];
- }
- }
- void print(int a[], int n)
- {
- printf("\n");
- for (int i = 0; i < n; i++)
- printf("%d ", a[i]);
- }
- int main()
- {
- int A[SET_SIZE] = { 0 };
- int n = sizeof(A) / sizeof(A[0]);
- int a[] = { 10,20,30 };
- int b[] = { 10,22,30 };
- int c[SET_SIZE] = { 0 };
- int c2[SET_SIZE] = { 0 };
- add(A, n, 3);
- print(A, n); // Принтиране на резултата след функцията add на първия ред
- Remove(A,n,3);
- print(A, n); // Принтиране на резултата след функцията remove на втория ред
- printf(" \nsize: %d", size(A, n)); // Принтиране на резултата от функцията size на третия ред
- Union(a, b, c, SET_SIZE);
- subtract(a, b, c2, SET_SIZE);
- print(c, SET_SIZE); // Принтиране на резултата след функцията Union на четвъртия ред
- print(c2, SET_SIZE); // Принтиране на резултата след функцията subtract на петия ред
- printf("\n%d", contains(a, SET_SIZE, 3)); // Принтиране на резултата от contains на шестия ред
- }
Advertisement
RAW Paste Data
Copied
Advertisement