Guest User

Untitled

a guest
Jul 23rd, 2018
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.41 KB | None | 0 0
  1. #include <iostream>
  2. #include <set>
  3. #include <string>
  4. #include <cstdlib>
  5. #include <bitset>
  6.  
  7. using namespace std;
  8.  
  9. void print_set(set<int>& s) {
  10. if(s.size() == 0) {
  11. cout << "A = ∅" << endl;
  12. return;
  13. }
  14. cout << "A = { ";
  15. for( set<int>::const_iterator iter = s.begin(); iter != s.end(); ++iter ) {
  16. cout << *iter << ' ';
  17. }
  18. cout << "}" << endl;
  19.  
  20. }
  21.  
  22. string bits(int code, int num_bits) {
  23. string buf;
  24. for(int i = num_bits-1; i >= 0; i--) {
  25. buf += 1 & (code>>i) ? "1": "0";
  26. }
  27. return buf;
  28. }
  29.  
  30. set<int> mask_set(set<int> &a, int code) {
  31. set<int> newset;
  32.  
  33. int i = a.size()-1;
  34. for( set<int>::const_iterator iter = a.begin(); iter != a.end(); ++iter ) {
  35. if(1 & (code>>i)) {
  36. newset.insert(*iter);
  37. }
  38. i--;
  39. }
  40. return newset;
  41. }
  42.  
  43. unsigned int bin2gray(unsigned int num)
  44. {
  45. return (num>>1) ^ num;
  46. }
  47.  
  48. int main() {
  49. std::set<int> stuff;
  50.  
  51. string read;
  52. cout << "Iveskite skaicius kurie bus ideti i aibe." << endl;
  53. cout << "Spauskite q kai noresite uzbaigti" << endl;
  54.  
  55. while(1) {
  56. cout << ":";
  57. cin >> read;
  58. if(read == "q") break;
  59.  
  60. stuff.insert(atoi(read.c_str()));
  61.  
  62. print_set(stuff);
  63. }
  64.  
  65. cout << "Grejaus kodai" << endl;
  66. for(int i = 0; i < 2<<(stuff.size()-1); i++) {
  67. int g = bin2gray(i);
  68. cout << bits(g, stuff.size()) << endl;
  69. set<int> masked = mask_set(stuff, g);
  70. print_set(masked);
  71. cout << "---------" << endl;
  72. }
  73.  
  74. return 0;
  75. }
Add Comment
Please, Sign In to add comment