From aacdf322834cceaf4eca08fc9cf24db7457616ff Mon Sep 17 00:00:00 2001 From: Stoycho Kyosev <68247567+stoychoX@users.noreply.github.com> Date: Wed, 24 Nov 2021 23:49:09 +0200 Subject: Add files via upload --- pract_KN/pract. 07/solutions.cpp | 51 +++++++++++++++++++++ ...70\321\201\321\202\320\265\320\274\320\270.pdf" | Bin 0 -> 81401 bytes 2 files changed, 51 insertions(+) create mode 100644 pract_KN/pract. 07/solutions.cpp create mode 100644 "pract_KN/pract. 07/\320\237\320\276\320\261\320\270\321\202\320\276\320\262\320\270 \320\276\320\277\320\265\321\200\320\260\321\206\320\270\320\270 \320\270 \320\261\321\200\320\276\320\271\320\275\320\270 \321\201\320\270\321\201\321\202\320\265\320\274\320\270.pdf" diff --git a/pract_KN/pract. 07/solutions.cpp b/pract_KN/pract. 07/solutions.cpp new file mode 100644 index 0000000..f53555c --- /dev/null +++ b/pract_KN/pract. 07/solutions.cpp @@ -0,0 +1,51 @@ +void getBitwiseRepresentation(int n) { + for (int i = 31; i >= 0; --i) + std::cout << ((n & (1 << i)) != 0); +} + +void flipFourthBit(int& n) { + int mask = 1 << 3; + n = n ^ mask; +} + +int numberOfZeroesInBinaryRepresentation(int n) { + int cnt = 0; + for (int i = 0; i < 32; i++) + cnt += ((n & (1 << i)) == 0); + + return cnt; +} + +void setBit(int& n, int bitPosition, bool newBitValue) { + int mask = 1 << bitPosition; + bool oldBitIsOne = ((mask & n) != 0); + if (oldBitIsOne ^ newBitValue) n = n ^ mask; +} + +void printSubset(int arr[], int length, int indexOfSet) { + std::cout << "["; + int commas = 0; + int numberOfOnes = 32 - numberOfZeroesInBinaryRepresentation(indexOfSet); + + for (int i = 0; i < length; i++) { + if (((indexOfSet & (1 << i)) != 0)) { + std::cout << arr[i]; + + if (++commas < numberOfOnes) + std::cout << ", "; + } + } + std::cout << ']' << std::endl; +} + +void generateSubSets(int arr[], int length) { + int mask = 0; + int border = 1 << length; + for (int i = 0; i < border; i++) + printSubset(arr, length, i); +} + +//bonus: function to change sign of a number +void changeSign(int& n) { + n = ~n + 1; +} diff --git "a/pract_KN/pract. 07/\320\237\320\276\320\261\320\270\321\202\320\276\320\262\320\270 \320\276\320\277\320\265\321\200\320\260\321\206\320\270\320\270 \320\270 \320\261\321\200\320\276\320\271\320\275\320\270 \321\201\320\270\321\201\321\202\320\265\320\274\320\270.pdf" "b/pract_KN/pract. 07/\320\237\320\276\320\261\320\270\321\202\320\276\320\262\320\270 \320\276\320\277\320\265\321\200\320\260\321\206\320\270\320\270 \320\270 \320\261\321\200\320\276\320\271\320\275\320\270 \321\201\320\270\321\201\321\202\320\265\320\274\320\270.pdf" new file mode 100644 index 0000000..da2a87c Binary files /dev/null and "b/pract_KN/pract. 07/\320\237\320\276\320\261\320\270\321\202\320\276\320\262\320\270 \320\276\320\277\320\265\321\200\320\260\321\206\320\270\320\270 \320\270 \320\261\321\200\320\276\320\271\320\275\320\270 \321\201\320\270\321\201\321\202\320\265\320\274\320\270.pdf" differ -- cgit v1.3.1-23-gd82d