jazykc  2013.3
upoljazykc
 All Classes Files Functions Variables Typedefs Macros Pages
t20u2.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 
4 /* struktura reprezentujici mnozinu */
5 typedef struct {
6  int *prvky; /* pole pro bitove ulozeni prvku */
7  int pocet; /* pocet prvku v mnozine */
8 } mnozina;
9 
10 void vypis(mnozina A); /* vypis indexu prvku dane mnoziny na obrazovku */
11 mnozina prunik(mnozina A, mnozina B); /* prunik dvou mnozin */
12 mnozina sjednoceni(mnozina A, mnozina B); /* sjednoceni dvou mnozin */
13 mnozina rozdil(mnozina A, mnozina B); /* rozdil prvni a druhe mnoziny */
14 
15 int main()
16 {
17  mnozina A, B, C;
18 
19  /* vytvoreni mnoziny A */
20  A.prvky = (int *) malloc(3 * sizeof(int));
21  A.prvky[0] = 43;
22  A.prvky[1] = 55;
23  A.prvky[2] = 42351;
24  A.pocet = 3 * sizeof(int) * 8;
25 
26  /* vytvoreni mnoziny B */
27  B.prvky = (int *) malloc(3 * sizeof(int));
28  B.prvky[0] = 43;
29  B.prvky[1] = 5501;
30  B.prvky[2] = 42000;
31  B.pocet = 3 * sizeof(int) * 8;
32 
33  /* vypis mnoziny A na obrazovku */
34  printf("Mnozina A: \n");
35  vypis(A);
36  printf("\n");
37 
38  /* vypis mnoziny B na obrazovku */
39  printf("Mnozina B: \n");
40  vypis(B);
41  printf("\n");
42 
43  /* vypocet pruniku a jeho vypis na obrazovku */
44  C = prunik(A, B);
45  printf("Prunik mnozin A a B: \n");
46  vypis(C);
47  printf("\n");
48 
49  /* vypocet sjednoceni a jeho vypis na obrazovku */
50  free(C.prvky);
51  C = sjednoceni(A, B);
52  printf("Sjednoceni mnozin A a B: \n");
53  vypis(C);
54  printf("\n");
55 
56  /* vypocet rozdilu a jeho vypis na obrazovku */
57  free(C.prvky);
58  C = rozdil(A, B);
59  printf("Rozdil mnozin A a B: \n");
60  vypis(C);
61  printf("\n");
62 
63  system("pause");
64  return 0;
65 }
66 
67 void vypis(mnozina A)
68 {
69  long maska;
70  int index;
71  int i, j;
72  int mez_i;
73 
74  index = 0;
75 
76  /* vypocet meze cyklu */
77  mez_i = A.pocet / (sizeof(int) * 8) + 1;
78 
79  /* cyklus pres cisla typu int */
80  for (i = 0; i < mez_i; i++) {
81 
82  /* vypocet meze cyklu */
83  int mez_j = (i < mez_i - 1) ? sizeof(int) * 8 : (A.pocet % (sizeof(int) * 8));
84 
85  /* posun masky na zacatek */
86  maska = 1;
87 
88  /* cyklus pres jednotlive bity */
89  for (j = 0; j < mez_j; j++) {
90 
91  /* pokud je prvek v mnozine - bit 1 pod maskou,
92  * tak vypiseme odpovidajici index
93  */
94  if (A.prvky[i] & maska)
95  printf("%i, ", index);
96  maska *= 2; /* posun masky */
97  index++; /* posun indexu */
98  }
99  }
100 }
101 
102 mnozina prunik(mnozina A, mnozina B)
103 {
104  /* DOPLNTE */
105 }
106 
107 mnozina sjednoceni(mnozina A, mnozina B)
108 {
109  /* DOPLNTE */
110 }
111 
112 mnozina rozdil(mnozina A, mnozina B)
113 {
114  /* DOPLNTE */
115 }
Definition: t20u2.c:5