Question: RUSH RUSH RUSH************************************* C++**********************************test1 Upload BigNumber.cpp and BigNumber.h, and your main function. Upload only these files. 1-Change the name of the class from dynamicArray to

RUSH RUSH RUSH************************************* C++**********************************test1

Upload BigNumber.cpp and BigNumber.h, and your main function.

Upload only these files.

1-Change the name of the class from dynamicArray to BigNumber.

2-Replace the private dynamic array with a private vector of integers

3-Remove any unnecessary functions from the new class. Hint: the dynamicArray class has pointers; the BigNumber class does not have pointers.

4-Move the mul function from the main function in file source.cpp to the BigNumber class.

5-Rewrite the mul function to use the private vector of integers to compute the product.

6-Test the program thoroughly.

====================source.cpp

#include

#include

#include "dynamicArray.h"

#include

using namespace std;

dynamicArray mul(const dynamicArray& n1, const dynamicArray& n2)

{

int size1 = n1.size();

int size2 = n2.size();

dynamicArray p12(size1 + size2);

for (int i1 = 0; i1 < size1; ++i1)

{

int ni1 = n1.get(i1);

for (int i2 = 0; i2 < size2; ++i2)

{

int pi1i2 = ni1 * n2.get(i2) + p12.get(i1 + i2);

if (pi1i2 > 9)

{

int overflow = p12.get(i1 + i2 + 1);

p12.put(i1 + i2 + 1, overflow + pi1i2 / 10);

pi1i2 = pi1i2 % 10;

}

p12.put(i1 + i2, pi1i2);

}

}

return p12;

}

dynamicArray add(const dynamicArray& n1, const dynamicArray& n2)

{

int size1 = n1.size();

int size2 = n2.size();

int size = min(size1, size2);

dynamicArray s12(max(size1, size2) + 1);

for (int i = 0; i < size; ++i)

{

int si = n1.get(i) + n2.get(i) + s12.get(i);

if (si > 9)

{

int carry = s12.get(i + 1);

s12.put(i + 1, carry + si / 10);

si = si % 10;

}

s12.put(i, si);

}

for (int i = size; i < size1; ++i)

{

int si = n1.get(i) + s12.get(i);

s12.put(i, si);

}

return s12;

}

dynamicArray sub(const dynamicArray& n1, const dynamicArray& n2)

{

int size1 = n1.size();

int size2 = n2.size();

int size = min(size1, size2);

dynamicArray d12(max(size1, size2));

for (int i = 0; i < size; ++i)

{

int di = n1.get(i) - n2.get(i) - d12.get(i);

if (di < 0)

{

int borrow = d12.get(i + 1);

d12.put(i + 1, borrow + 1);

di = di + 10;

}

d12.put(i, di);

}

for (int i = size; i < size1; ++i)

{

int di = n1.get(i) - d12.get(i);

if (di < 0)

{

int borrow = d12.get(i + 1);

d12.put(i + 1, borrow + 1);

di = di + 10;

}

d12.put(i, di);

}

for (int i = size; i < size2; ++i)

{

int di = 0 - d12.get(i);

if (di < 0)

{

int borrow = d12.get(i + 1);

d12.put(i + 1, borrow + 1);

di = di + 10;

}

d12.put(i, di);

}

return d12;

}

int main()

{

dynamicArray n1(3);

dynamicArray n2(3);

n1.put(0, 5);

n1.put(1, 3);

n1.put(2, 1);

n2.put(0, 1);

n2.put(1, 2);

n2.put(2, 8);

dynamicArray p12 = mul(n1, n2);

n1.show();

cout << " x ";

n2.show();

cout << " = ";

p12.show();

cout << endl;

p12 = mul(n2, n1);

n2.show();

cout << " x ";

n1.show();

cout << " = ";

p12.show();

cout << endl;

dynamicArray a12 = add(n1, n2);

n1.show();

cout << " + ";

n2.show();

cout << " = ";

a12.show();

cout << endl;

a12 = add(n2, n1);

n2.show();

cout << " + ";

n1.show();

cout << " = ";

a12.show();

cout << endl;

dynamicArray d12 = sub(n1, n2);

n1.show();

cout << " - ";

n2.show();

cout << " = ";

d12.show();

cout << endl;

d12 = sub(n2, n1);

n2.show();

cout << " - ";

n1.show();

cout << " = ";

d12.show();

cout << endl;

return 0;

}

==================dynamicArray.h

#pragma once

class dynamicArray

{

public:

const dynamicArray& operator=(const dynamicArray& source);

dynamicArray(int new_size = 16);

dynamicArray(const dynamicArray& source);

~dynamicArray();

int get(int where) const;

int size() const;

void put(int where, int what);

void show() const;

private:

void copy(const dynamicArray& source);

int _size;

int *_elts;

};

=============================dynamicArray.cpp

#include

#include

#include "dynamicArray.h"

using namespace std;

const dynamicArray& dynamicArray::operator=(const dynamicArray& source)

{

if (this != &source)

{

delete[] _elts;

copy(source);

}

return *this;

}

dynamicArray::dynamicArray(int new_size)

{

_size = new_size;

_elts = new int[_size];

for (int i = 0; i < _size; ++i)

_elts[i] = 0;

}

dynamicArray::dynamicArray(const dynamicArray& source)

{

copy(source);

}

dynamicArray::~dynamicArray()

{

delete[] _elts;

_elts = nullptr;

_size = -1;

}

void dynamicArray::copy(const dynamicArray& source)

{

_size = source._size;

_elts = new int[_size];

for (int i = 0; i < _size; ++i)

_elts[i] = source._elts[i];

}

int dynamicArray::get(int where) const

{

assert(0 <= where && where < _size);

return _elts[where];

}

int dynamicArray::size() const

{

return _size;

}

void dynamicArray::put(int where, int new_elt)

{

assert(0 <= where && where < _size);

_elts[where] = new_elt;

}

void dynamicArray::show() const

{

for (int i = _size - 1; i >= 0; --i)

cout << _elts[i];

}

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!