Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <set>
- #include <string>
- #include <cstdlib>
- #include <bitset>
- using namespace std;
- void print_set(set<int>& s) {
- if(s.size() == 0) {
- cout << "A = ∅" << endl;
- return;
- }
- cout << "A = { ";
- for( set<int>::const_iterator iter = s.begin(); iter != s.end(); ++iter ) {
- cout << *iter << ' ';
- }
- cout << "}" << endl;
- }
- string bits(int code, int num_bits) {
- string buf;
- for(int i = num_bits-1; i >= 0; i--) {
- buf += 1 & (code>>i) ? "1": "0";
- }
- return buf;
- }
- set<int> mask_set(set<int> &a, int code) {
- set<int> newset;
- int i = a.size()-1;
- for( set<int>::const_iterator iter = a.begin(); iter != a.end(); ++iter ) {
- if(1 & (code>>i)) {
- newset.insert(*iter);
- }
- i--;
- }
- return newset;
- }
- unsigned int bin2gray(unsigned int num)
- {
- return (num>>1) ^ num;
- }
- int main() {
- std::set<int> stuff;
- string read;
- cout << "Iveskite skaicius kurie bus ideti i aibe." << endl;
- cout << "Spauskite q kai noresite uzbaigti" << endl;
- while(1) {
- cout << ":";
- cin >> read;
- if(read == "q") break;
- stuff.insert(atoi(read.c_str()));
- print_set(stuff);
- }
- cout << "Grejaus kodai" << endl;
- for(int i = 0; i < 2<<(stuff.size()-1); i++) {
- int g = bin2gray(i);
- cout << bits(g, stuff.size()) << endl;
- set<int> masked = mask_set(stuff, g);
- print_set(masked);
- cout << "---------" << endl;
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment