Advertisement
Guest User

Untitled

a guest
Jan 20th, 2020
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.73 KB | None | 0 0
  1. //functions.h
  2.  
  3. #ifndef FUNCTIONS_H
  4. #define FUNCTIONS_H
  5.  
  6. #include <iostream>
  7. #include <time.h>
  8. #include <cmath>
  9. using namespace std;
  10.  
  11. void init(char*& arr, int);
  12. void u_mask_init(bool*&, int);
  13. void mask_init(bool*&, int);
  14. void mask_uninit(bool*&);
  15. int mask_length(bool*&, int);
  16. void uninit(char*& arr);
  17. void in(char*& arr, int);
  18. void U_output(char* arr, int);
  19. bool isItSet(char*, int);
  20. void makeSet(char*&, int&);
  21. void enter(char*&, char*, bool*&, int);
  22. void output(char*&, bool*, int);
  23. void Difference(bool*, bool*, int);
  24. bool doesItBelong(bool*, bool*, int);
  25. bool isItSame(bool*, bool*, int);
  26. void outputGeneratedArr(bool*, unsigned);
  27. void GenerateSet(unsigned, unsigned, bool*);
  28.  
  29. /*
  30. void initAllMasks(bool**&, int);
  31. void inAllMasks(bool**&, int);
  32. void printAllMasks(bool**, int);
  33. void uninitAllMasks(bool**&, int);
  34. void genKSet(int*, unsigned, unsigned , unsigned, unsigned, unsigned);
  35. int printArray(int*, unsigned);
  36.  
  37. int toBinary(int, char*, int);
  38. int genSubSetBitmask(unsigned, char**);
  39. int printBitmask(unsigned, char**);
  40. int getSetFromBitmask(char*, int*, unsigned);
  41.  
  42. */
  43. #endif
  44.  
  45.  
  46.  
  47. //functions.cpp
  48. #include "functions.h"
  49.  
  50. //UNIVERSAL ARRAY
  51.  
  52. void init(char*& arr, int length) {
  53. arr = new char[length];
  54. }
  55.  
  56. void u_mask_init(bool*& arr, int length) {
  57. arr = new bool[length];
  58. for (int i = 0; i < length; i++) {
  59. arr[i] = true;
  60. }
  61. }
  62.  
  63. void mask_init(bool*& arr, int length) {
  64. arr = new bool[length];
  65. for (int i = 0; i < length; i++) {
  66. arr[i] = false;
  67. }
  68. }
  69.  
  70. void mask_uninit(bool*& arr) {
  71. if (arr != nullptr) {
  72. delete[] arr;
  73. arr = nullptr;
  74. }
  75. }
  76.  
  77. int mask_length(bool*& arr, int length) {
  78. int sum = 0;
  79. for (int i = 0; i < length; i++) {
  80. if (arr[i] == true) {
  81. sum++;
  82. }
  83. }
  84. return sum;
  85. }
  86.  
  87. void uninit(char*& arr) {
  88. if (arr != nullptr) {
  89. delete[] arr;
  90. arr = nullptr;
  91. }
  92. }
  93.  
  94. void in(char*& arr, int length) {
  95. for (int i = 0; i < length; i++) {
  96. arr[i]= rand()%(122-97+1)+97;
  97. }
  98. }
  99.  
  100. //
  101. void U_output(char* arr, int length) {
  102. cout << endl;
  103. for (int i = 0; i < length; i++) {
  104. cout <<"'"<< arr[i] <<"' ";
  105. }
  106. cout << endl;
  107. }
  108.  
  109. void makeSet(char*& arr, int& length) {
  110. int newsz=length;
  111.  
  112. for (int i = 0; i < length; i++) {
  113. for (int j = i + 1; j < length; j++) {
  114. if (arr[i] == arr[j]) {
  115. newsz--;
  116. break;
  117. }
  118. }
  119. }
  120.  
  121. char* arr2 = new char[newsz];
  122. arr2[0] = arr[0];
  123.  
  124. for (int i = 0; i < newsz-1; i++) {
  125. for (int j = i+1; j < length; j++) {
  126. if (arr2[i] != arr[j]) {
  127. bool flag = true;
  128. for (int k = 0; k < i; k++) {
  129. if(arr[j]==arr2[k]){
  130. flag = false;
  131. break;
  132. }
  133. }
  134. if (flag == true) {
  135. arr2[i+1] = arr[j];
  136. break;
  137. }
  138. }
  139. }
  140. }
  141.  
  142. delete[] arr;
  143. arr = arr2;
  144. length = newsz;
  145. }
  146.  
  147. bool isItSet(char* arr, int length) {
  148. for (int i = 0; i < length; i++) {
  149. for (int j = i + 1; j < length; j++) {
  150. if (arr[i] == arr[j]) {
  151. return false;
  152. break;
  153. }
  154. }
  155. }
  156. return true;
  157. }
  158.  
  159.  
  160.  
  161.  
  162. void enter(char*& arr, char*u_arr, bool*& arr1, int length) {
  163.  
  164. for (int i = 0; i < length; i++) {
  165. cin >> arr[i];
  166. }
  167.  
  168. for (int i = 0; i < length; i++) {
  169. for (int j = 0; j < length; j++) {
  170. if (arr[i] == u_arr[j]) {
  171. arr1[j] = true;
  172. }
  173. }
  174. }
  175.  
  176. for (int i = 0; i < length; i++) {
  177. if (arr1[i] == true) {
  178. arr[i] = u_arr[i];
  179. }
  180. }
  181. }
  182.  
  183. void output(char*& arr, bool* arr1, int length) {
  184. cout << endl;
  185. for (int i = 0; i < length; i++) {
  186. if (arr1[i] == true) {
  187. cout << arr[i];
  188. }
  189. else cout << " ";
  190. }
  191. cout << endl;
  192. for (int i = 0; i < length; i++) {
  193. cout << arr1[i];
  194. }
  195. cout << endl;
  196. }
  197.  
  198. void Difference(bool* mask1, bool* mask2, int length) {
  199. cout << endl;
  200. for (int i = 0; i < length; i++) {
  201. if (mask1[i] == true && mask2[i] != true) {
  202. cout << 1;
  203. }
  204. else cout << 0;
  205. }
  206. cout << endl;
  207. }
  208.  
  209. bool doesItBelong(bool* mask1, bool* mask2, int length) {
  210. bool flag = true;
  211. for (int i = 0; i < length; i++) {
  212. if (mask1[i] == true) {
  213. if (mask2[i] != true) {
  214. flag = false;
  215. break;
  216. }
  217. }
  218. }
  219.  
  220. if (flag) { return true; }
  221. else return false;
  222. }
  223.  
  224. bool isItSame(bool* mask1, bool* mask2, int length) {
  225. bool flag = true;
  226. for (int i = 0; i < length; i++) {
  227. if (mask1[i] != mask2[i]) {
  228. flag = false;
  229. break;
  230. }
  231. }
  232. if (flag == true) { return true; }
  233. else return false;
  234. }
  235.  
  236.  
  237. void outputGeneratedArr(bool* arr, unsigned sz) {
  238. for (unsigned i = 0; i < sz; i++)
  239. cout << arr[i] << "\t";
  240. cout << endl;
  241. }
  242.  
  243. void GenerateSet(unsigned len, unsigned pos, bool* arr) {
  244. if (len == pos) {
  245. outputGeneratedArr(arr, len);
  246. return;
  247. }
  248. arr[pos] = 0;
  249. GenerateSet(len, pos + 1, arr);
  250. arr[pos] = 1;
  251. GenerateSet(len, pos + 1, arr);
  252.  
  253. }
  254.  
  255. void AllMasks(unsigned len, unsigned pos, bool**& arr) {
  256.  
  257. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement