Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //functions.h
- #ifndef FUNCTIONS_H
- #define FUNCTIONS_H
- #include <iostream>
- #include <time.h>
- #include <cmath>
- using namespace std;
- void init(char*& arr, int);
- void u_mask_init(bool*&, int);
- void mask_init(bool*&, int);
- void mask_uninit(bool*&);
- int mask_length(bool*&, int);
- void uninit(char*& arr);
- void in(char*& arr, int);
- void U_output(char* arr, int);
- bool isItSet(char*, int);
- void makeSet(char*&, int&);
- void enter(char*&, char*, bool*&, int);
- void output(char*&, bool*, int);
- void Difference(bool*, bool*, int);
- bool doesItBelong(bool*, bool*, int);
- bool isItSame(bool*, bool*, int);
- void outputGeneratedArr(bool*, unsigned);
- void GenerateSet(unsigned, unsigned, bool*);
- /*
- void initAllMasks(bool**&, int);
- void inAllMasks(bool**&, int);
- void printAllMasks(bool**, int);
- void uninitAllMasks(bool**&, int);
- void genKSet(int*, unsigned, unsigned , unsigned, unsigned, unsigned);
- int printArray(int*, unsigned);
- int toBinary(int, char*, int);
- int genSubSetBitmask(unsigned, char**);
- int printBitmask(unsigned, char**);
- int getSetFromBitmask(char*, int*, unsigned);
- */
- #endif
- //functions.cpp
- #include "functions.h"
- //UNIVERSAL ARRAY
- void init(char*& arr, int length) {
- arr = new char[length];
- }
- void u_mask_init(bool*& arr, int length) {
- arr = new bool[length];
- for (int i = 0; i < length; i++) {
- arr[i] = true;
- }
- }
- void mask_init(bool*& arr, int length) {
- arr = new bool[length];
- for (int i = 0; i < length; i++) {
- arr[i] = false;
- }
- }
- void mask_uninit(bool*& arr) {
- if (arr != nullptr) {
- delete[] arr;
- arr = nullptr;
- }
- }
- int mask_length(bool*& arr, int length) {
- int sum = 0;
- for (int i = 0; i < length; i++) {
- if (arr[i] == true) {
- sum++;
- }
- }
- return sum;
- }
- void uninit(char*& arr) {
- if (arr != nullptr) {
- delete[] arr;
- arr = nullptr;
- }
- }
- void in(char*& arr, int length) {
- for (int i = 0; i < length; i++) {
- arr[i]= rand()%(122-97+1)+97;
- }
- }
- //
- void U_output(char* arr, int length) {
- cout << endl;
- for (int i = 0; i < length; i++) {
- cout <<"'"<< arr[i] <<"' ";
- }
- cout << endl;
- }
- void makeSet(char*& arr, int& length) {
- int newsz=length;
- for (int i = 0; i < length; i++) {
- for (int j = i + 1; j < length; j++) {
- if (arr[i] == arr[j]) {
- newsz--;
- break;
- }
- }
- }
- char* arr2 = new char[newsz];
- arr2[0] = arr[0];
- for (int i = 0; i < newsz-1; i++) {
- for (int j = i+1; j < length; j++) {
- if (arr2[i] != arr[j]) {
- bool flag = true;
- for (int k = 0; k < i; k++) {
- if(arr[j]==arr2[k]){
- flag = false;
- break;
- }
- }
- if (flag == true) {
- arr2[i+1] = arr[j];
- break;
- }
- }
- }
- }
- delete[] arr;
- arr = arr2;
- length = newsz;
- }
- bool isItSet(char* arr, int length) {
- for (int i = 0; i < length; i++) {
- for (int j = i + 1; j < length; j++) {
- if (arr[i] == arr[j]) {
- return false;
- break;
- }
- }
- }
- return true;
- }
- void enter(char*& arr, char*u_arr, bool*& arr1, int length) {
- for (int i = 0; i < length; i++) {
- cin >> arr[i];
- }
- for (int i = 0; i < length; i++) {
- for (int j = 0; j < length; j++) {
- if (arr[i] == u_arr[j]) {
- arr1[j] = true;
- }
- }
- }
- for (int i = 0; i < length; i++) {
- if (arr1[i] == true) {
- arr[i] = u_arr[i];
- }
- }
- }
- void output(char*& arr, bool* arr1, int length) {
- cout << endl;
- for (int i = 0; i < length; i++) {
- if (arr1[i] == true) {
- cout << arr[i];
- }
- else cout << " ";
- }
- cout << endl;
- for (int i = 0; i < length; i++) {
- cout << arr1[i];
- }
- cout << endl;
- }
- void Difference(bool* mask1, bool* mask2, int length) {
- cout << endl;
- for (int i = 0; i < length; i++) {
- if (mask1[i] == true && mask2[i] != true) {
- cout << 1;
- }
- else cout << 0;
- }
- cout << endl;
- }
- bool doesItBelong(bool* mask1, bool* mask2, int length) {
- bool flag = true;
- for (int i = 0; i < length; i++) {
- if (mask1[i] == true) {
- if (mask2[i] != true) {
- flag = false;
- break;
- }
- }
- }
- if (flag) { return true; }
- else return false;
- }
- bool isItSame(bool* mask1, bool* mask2, int length) {
- bool flag = true;
- for (int i = 0; i < length; i++) {
- if (mask1[i] != mask2[i]) {
- flag = false;
- break;
- }
- }
- if (flag == true) { return true; }
- else return false;
- }
- void outputGeneratedArr(bool* arr, unsigned sz) {
- for (unsigned i = 0; i < sz; i++)
- cout << arr[i] << "\t";
- cout << endl;
- }
- void GenerateSet(unsigned len, unsigned pos, bool* arr) {
- if (len == pos) {
- outputGeneratedArr(arr, len);
- return;
- }
- arr[pos] = 0;
- GenerateSet(len, pos + 1, arr);
- arr[pos] = 1;
- GenerateSet(len, pos + 1, arr);
- }
- void AllMasks(unsigned len, unsigned pos, bool**& arr) {
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement