Answer to Question #196726 in C++ for mahnoor

Question #196726

Implement MeraSet3 class similar to the last assignment. Make it unlimited, ie. use new and delete to extend or contract the memory size of the underlying array as required. Initially make it size 1, and grow it to two when you have the first insert, and so on. Similarly, reduce the size by 1 when a member element is removed.


1
Expert's answer
2021-05-21T16:52:59-0400
class MeraSet3{
    int *items, number;
    public:
    MeraSet3(): number(0) {}
    int Insert(int e){
        if(number == 0){
            items = new int[1];
            number++;
            items[0] = e;
            return 1;
        }
        for(int i = 0; i < number; i++){
            if(items[i] == e) return -1;
        }
        items = (int*) realloc(items, ++number * sizeof(int));
        items[number - 1] = e;
        return 1;
    }
    int Remove(int e){
        for(int j = 0; j < number; j++){
            if(items[j] == e){
                int *arr = new int[number];
                for(int i = 0; i < number; i++) arr[i] = items[i];
                items = (int*) realloc(items, --number * sizeof(int));
                for(int i = 0, k = 0; i < number + 1; i++){
                    if(i == j) continue;
                    else{
                        items[k] = arr[i];
                        k++;
                    }
                }
                return 1;
            }
        }
        return -1;
    }
    void Print(){
        if(number == 0) cout<<"{}";
        else{
            cout<<"{";
            for(int i = 0; i < number; i++) cout<<items[i]<<",";
            cout<<"\b}";
        }
    }
    int cardinality(){
        return number;
    }
    MeraSet3 operator+(const MeraSet3 &temp){
        MeraSet3 result = *this;
        for(int i = 0; i < temp.number; i++) result.Insert(temp.items[i]);
        return result;
    }
    MeraSet3 operator-(const MeraSet3 &temp){
        MeraSet3 result = *this;
        for(int i = 0; i < temp.number; i++) result.Remove(temp.items[i]);
        return result;
    }
    MeraSet3(const MeraSet3 &temp){
        this->number = temp.number;
        this->items = new int[this->number];
        for(int i = 0; i < this->number; i++) this->items[i] = temp.items[i];
    }
};

Need a fast expert's response?

Submit order

and get a quick answer at the best price

for any assignment or question with DETAILED EXPLANATIONS!

Comments

No comments. Be the first!

Leave a comment

LATEST TUTORIALS
New on Blog