Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

//I'm trying to create a bitset with this code but I get several errors when I compile. Any help fixing the errors would be great

//I'm trying to create a bitset with this code but I get several errors when I compile. Any help fixing the errors would be great thank you.

#include #include

using namespace std;

class BITSET{ private: vector sets; void increaseSet(int n){ unsigned int s = sets.size(); sets.resize(s+(32*n)); for(unsigned int i=s;i

public: BITSET(){sets.resize(1, 0); }

bool Test(unsigned int bit){ unsigned int index = bit/ (sizeof(int)*8); if (invalid index - (i.e. index >= vector.size())) { return 0; } int offset = bit % (sizeof(int)*8); return ((vector[index] >> offset) & 1); }

void Set (unsigned int bit) { unsigned int index = bit/ (sizeof(int)*8); if (invalid bit) { vector.resize(index+1,0); } int offset= bit% (sizeof(int)*8); (vector[index] >> offset) |= 1; }

void Clear(unsigned int bit){ unsigned int index = bit/(sizeof(int)*8); if (index >= size of vector ) { cout<< "Invalid index. Enter valid index "; } else { int offset = bit % (sizeof(int)*8); vector[index] &= ~(1 << offset); if (vector[index] == 0 && index, i >= 1, i--) if (vector[i] == 0) { vector.erase (vector.begin() + 1); } else { break; } } } }

int GetNumSets(){ return sets.size()/32; } void inc(){ increaseSet(1); }

void print(int n){ if(n < 0 || n > GetNumSets()){ return ; } for(int i = n*32;i<(n+1)*32;i++){ if(i%32 == 0){ printf(" SET %d: ",i/32); } if(i%4 == 0){ printf(" "); } printf("%d",sets[i]); } }

};

string ToBinary(int val,int space){ BITSET b; int i = 0; while(val > 2){ if(val%2 == 0){ b.Clear(i); }else{ b.Set(i); } i++; val = val/2; }

if(val == 1){ b.Set(i); }

if(val == 2){ b.Clear(i); i++; b.Set(i); } string s = ""; for(int i = 32;i>0;i--){ if(i != 32 && i % space == 0){ s += ' '; } if(b.Test(i)){ s += '1'; }else{ s += '0'; } } cout<

int main(){ BITSET b; char command = ' '; while(command != 'q'){ printf(" CMD >> "); scanf("%c",&command); switch(command){ case 't': { int n; scanf("%d",&n); if(b.Test(n)){ printf(" 1"); }else{ printf(" 0"); } break; } case 's': { int n; scanf("%d",&n); b.Set(n); break; } case 'g': { int n; scanf("%d",&n); b.print(n); break; } case 'n': { int n = b.GetNumSets(); printf(" Number Of Set : %d",n); break; } case 'q': { command = 'q'; break; } case 'c': { int n; scanf("%d",&n); b.Clear(n); break; } default: printf(" INVALID COMMAND !!! "); } char c; scanf("%c" ,&c);

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Database Processing Fundamentals Design And Implementation

Authors: David M. Kroenke

5th Edition

B000CSIH5A, 978-0023668814

Students also viewed these Databases questions

Question

7-2 What are the different types of networks?

Answered: 1 week ago