Answer to Question #315691 in C++ for khan

Question #315691

Implement a class Sequence to store a sequence of non-negative integer values, and the length of the sequence. The class has the following private data members:

1. int length

2. int *pseq

The class shall provide the following public methods:

1. Sequence() – default constructor

2. Sequence(int lengthVal, int n1=0,int n2=0,int n3=0, int n4=0, int n5=0, int n6=0, int n7=0, int n8=0, int n9=0, int n10=0) – parameterized constructor should initialize the

length and array to sequence values passed in the arguments.

3. Sequence(Sequence &s)

4. int getLength()

5. int* getSeq()

6. void Sort(int n)

7. int RemoveDuplicates()

Return n after placing the final result in the first k elements of the array.

8. void Rotate(int steps) – a method that rotates the sequence elements clockwise for the

given steps

9. ~Sequence()


1
Expert's answer
2022-03-24T07:49:03-0400
#include <iostream>
#include <cstdlib>
using namespace std;


class Sequence {
private:
    int length;
    int *pseq;


public:
    Sequence();
    Sequence(int lengthVal, int n1=0,int n2=0,int n3=0, int n4=0, int n5=0, int n6=0, int n7=0,
             int n8=0, int n9=0, int n10=0);
    Sequence(Sequence &s);
    ~Sequence();
    int getLength() { return length; }
    int* getSeq()   {return pseq; }
    void Sort(int n);
    int RemoveDuplicates();
    void Rotate(int steps);
};


Sequence::Sequence() 
{
    length = 10;
    pseq = new int[length];
    for (int i=0; i<length; i++) {
        pseq[i] = 0;
    }
}


Sequence::Sequence(int lengthVal, int n1,int n2,int n3, int n4, int n5, int n6, int n7,
                   int n8, int n9, int n10)
{
    length = lengthVal;
    if (length < 0) {
        cerr << "Error: length is negative" << endl;
        exit(1);
    }
    pseq = new int[length];
    for (int i=0; i<length; i++) {
        pseq[i] = 0;
    }
    if (length > 0)
        pseq[0] = n1;
    if (length > 1)
        pseq[1] = n2;
    if (length > 2)
        pseq[2] = n3;
    if (length > 3)
        pseq[3] = n4;
    if (length > 4)
        pseq[4] = n5;
    if (length > 5)
        pseq[5] = n6;
    if (length > 6)
        pseq[6] = n6;
    if (length > 6)
        pseq[6] = n7;
    if (length > 7)
        pseq[7] = n8;
    if (length > 8)
        pseq[8] = n9;
    if (length > 9)
        pseq[9] = n10;
}             


Sequence::Sequence(Sequence &s)
{
    length = s.length;
    pseq = new int[length];
    for (int i=0; i<length; i++) {
        pseq[i] = s.pseq[i];
    }
}


Sequence::~Sequence() {
    delete [] pseq;
}


void Sequence::Sort(int n) {
    int i_min;


    for (int i=0; i<n-1; i++) {
        i_min = i;
        for (int j=i+1; j<n; j++) {
            if (pseq[j] < pseq[i_min]) {
                i_min = j;
            }
        }
        if (i_min != i) {
            int tmp = pseq[i];
            pseq[i] = pseq[i_min];
            pseq[i_min] = tmp;
        }
    }
}


int Sequence::RemoveDuplicates()
{
    Sort(length);
    int j = 0;
    for (int i=1; i<length; i++) {
        if (pseq[i-1] != pseq[i]) {
            j++;
            if (i != j) {
                int tmp = pseq[j];
                pseq[j] = pseq[i];
                pseq[i] = tmp;
            }
        }
    }
    return j;
}


void Sequence::Rotate(int steps) {
    int *tmp =  new int[steps];


    for (int i=0; i<steps; i++) {
        tmp[steps-1-i] = pseq[length-1-i];
    }


    for (int i=length-1; i>=steps; i--) {
        pseq[i] = pseq[i-steps];
    }


    for (int i=0; i<steps; i++) {
        pseq[i] = tmp[i];
    }
    delete [] tmp;
}


void print(const char* msg, Sequence& s) {
    int *p = s.getSeq();


    cout << msg;
    for (int i=0; i<s.getLength(); i++) {
        cout << p[i] << " ";
    }
    cout << endl;
}


int main() {
    int n1=10, n2=4, n3=8, n4=3, n5=12;

    Sequence s(8, n1, n2, n3, n4, n5);
    print("Initial sequence: ", s);

    s.Sort(6);
    print("After Sort(6): ", s);

    int n = s.RemoveDuplicates();
    cout << "RemoveDuplicates() = " << n << endl;
    print("RemoveDuplicates(): ", s);

    s.Rotate(3);
    print("After Rotate(3): ", s);

    return 0;
}

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