In: Computer Science
Using only <iostream>, implement a dynamic array. You are to build a class called MyDynamicArray. Your dynamic array class should manage the storage of an array that can grow and shrink. The public methods of your class should be the following:
MyDynamicArray(); Default Constructor. The array should be of size 2.
MyDynamicArray(int s); For this constructor the array should be of size s.
~MyDynamicArray();Destructor for the class.
int& operator[](int i); Traditional [] operator. Should print a message if i is out of bounds and return a reference to a zero value.
void add(int v); increases the size of the array by 1 and stores v there.
void del(); reduces the size of the array by 1.
int length(); returns the length of the array.
int clear(); Frees any space currently used and starts over with an array of size 2.
Here is a sample main.cpp file:
#include <iostream>
using namespace std;
#include "MyDynamicArray.cpp"
int main() {
MyDynamicArray x;
for (int i=0; i<100; i++){
x.add(i);
}
int sum = 0;
for (int i=0; i<x.length(); i++){
sum+=x[i];
}
cout << "The sum is : " << sum << endl;
for (int i=0; i<95; i++)
x.del();
x[60] = 27;
MyDynamicArray y(10);
for (int i=0; i<y.length(); i++) y[i] = i*i;
for (int i=0; i<200; i++){
y.add(i);
}
sum = 0;
for (int i=0; i<y.length(); i++){
sum+=y[i];
}
cout << "The sum is : " << sum << endl;
for (int i=0; i<195; i++)
y.del();
y[60] = 27;
for (int i=0; i<200; i++){
y.add(i);
}
sum = 0;
for (int i=0; i<y.length(); i++){
sum+=y[i];
}
cout << "The sum is : " << sum << endl;
}
Here is the output from the main.cpp above :
Doubling to : 4
Doubling to : 8
Doubling to : 16
Doubling to : 32
Doubling to : 64
Doubling to : 128
The sum is : 4950
Reducing to : 64
Reducing to : 32
Reducing to : 16
Out of bounds reference : 60
Doubling to : 20
Doubling to : 40
Doubling to : 80
Doubling to : 160
Doubling to : 320
The sum is : 20185
Reducing to : 160
Reducing to : 80
Reducing to : 40
Out of bounds reference : 60
Doubling to : 80
Doubling to : 160
Doubling to : 320
The sum is : 20195
#include <iostream>
using namespace std;
class MyDynamicArray {
public:
MyDynamicArray(); // Default Constructor
MyDynamicArray(int s); //parameterised Constructor
~MyDynamicArray(); //destructor
int& operator[](int i); //Traditional [] operator
void add(int v); //increases the size of the array by 1 and stores
v there.
void del(); // reduces the size of the array by 1.
int length(); //returns the length of the array.
int clear(); //Frees any space currently used and starts over with
an array of size 2
private:
int size;
int arr[2];
};
MyDynamicArray::MyDynamicArray() {
size = 2;
}
MyDynamicArray::MyDynamicArray(int s) {
size = s;
}
MyDynamicArray::~MyDynamicArray() {
size = 0;
}
void MyDynamicArray::add(int v) {
size++;
arr[size - 1] = v;
}
void MyDynamicArray::del() {
size--;
}
int MyDynamicArray::length() {
return size;
}
int MyDynamicArray::clear() {
size = 2;
return 1;
}
int &MyDynamicArray::operator[](int i) {
if (i > size) {
cout << "Index out of bounds" << endl;
// return first element.
return arr[0];
}
return arr[i];
}
//#include <iostream>
//using namespace std;
//#include "MyDynamicArray.cpp"
int main() {
MyDynamicArray x;
for (int i = 0; i < 100; i++) {
x.add(i);
}
int sum = 0;
for (int i = 0; i < x.length(); i++) {
sum += x[i];
}
cout << "The sum is : " << sum << endl;
for (int i = 0; i < 95; i++)
x.del();
x[60] = 27;
MyDynamicArray y(10);
for (int i = 0; i < y.length(); i++) y[i] = i * i;
for (int i = 0; i < 200; i++) {
y.add(i);
}
sum = 0;
for (int i = 0; i < y.length(); i++) {
sum += y[i];
}
cout << "The sum is : " << sum << endl;
for (int i = 0; i < 195; i++)
y.del();
y[60] = 27;
for (int i = 0; i < 200; i++) {
y.add(i);
}
sum = 0;
for (int i = 0; i < y.length(); i++) {
sum += y[i];
}
cout << "The sum is : " << sum << endl;
return 0;
}
output:

Please comment of you have any query!!