Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Hi, i need help with a C++ program that involves creating a IntArray class for operator overloading. Im runnig into two errors that i can't

Hi, i need help with a C++ program that involves creating a IntArray class for operator overloading. Im runnig into two errors that i can't resolve ill post my code and the code for the lab below:

// iadrv.h

#ifndef _IADRV_H #define _IADRV_H

#include "IntArray.h"

int main(); void test1(); /*void test2(); void test3(); void test4(); void test5(); void test6(); void test7(); void test8(); void test9(); void test10(); void test11(); void test12(); void test13(); void test14(); void test15(); void test16(); void test17(); void test18(); void test19(); void test20(); */ void wait();

#endif

// iadrv.cpp - driver program for testing IntArray class

#include

#include

#include

#include

#include "iadrv.h"

using namespace std;

ofstream csis;

int main() {

csis.open("csis.txt");

test1();

/* test2();

test3();

test4();

test5();

test6();

test7();

test8();

test9();

test10();

test11();

test12();

test13();

test14();

test15();

test16();

test17();

test18();

test19();

test20();

*/

csis.close();

}

void test1() {

cout << "1. Array declared with single integer: IntArray a(10);" << endl << endl;

csis << "1. Array declared with single integer: IntArray a(10);" << endl << endl;

IntArray a(10);

for(int i = a.low(); i <= a.high(); i++)

a[i] = i * 10;

a.setName("a");

cout << a << endl;

csis << a << endl;

wait();

}

/*void test2() {

cout << "2. Array declared with two integers: IntArray b(-3, 6);" << endl << endl;

csis << "2. Array declared with two integers: IntArray b(-3, 6);" << endl << endl;

IntArray b(-3, 6);

for(int i = b.low(); i <= b.high(); i++)

b[i] = i * 10;

b.setName("b");

cout << b << endl;

csis << b << endl;

wait();

}

void test3() {

cout << "3. Array declared with two integers: IntArray c(6, 8);" << endl << endl;

csis << "3. Array declared with two integers: IntArray c(6, 8);" << endl << endl;

IntArray c(6, 8);

for(int i = c.low(); i <= c.high(); i++)

c[i] = i * 10;

c.setName("c");

cout << c << endl;

csis << c << endl;

wait();

}

void test4() {

cout << "4. Array declared with two identical integers: IntArray d(5, 5);" << endl << endl;

csis << "4. Array declared with two identical integers: IntArray d(5, 5);" << endl << endl;

IntArray d(5, 5);

for(int i = d.low(); i <= d.high(); i++)

d[i] = i * 10;

d.setName("d");

cout << d << endl;

csis << d << endl;

wait();

}

void test5() {

cout << "5. Array declared with no integers: IntArray z;" << endl << endl;

csis << "5. Array declared with no integers: IntArray z;" << endl << endl;

IntArray z;

for(int i = z.low(); i <= z.high(); i++)

z[i] = i * 10;

z.setName("z");

cout << z << endl;

csis << z << endl;

wait();

}

void test6() {

cout << "6. Array declared with another object of type IntArray: IntArray c(6, 8);" << endl;

cout << " Intarray e(c);" << endl << endl;

csis << "6. Array declared with another object of type IntArray: IntArray c(6, 8);" << endl;

csis << " Intarray e(c);" << endl << endl;

IntArray c(6, 8);

for(int i = c.low(); i <= c.high(); i++)

c[i] = i * 10;

c.setName("c");

cout << c << endl;

csis << c << endl;

IntArray e(c);

e.setName("e");

cout << e << endl;

csis << e << endl;

wait();

}

void test7() {

cout << "7. Array assigned to another array w/ different indices: IntArray f(1, 4);" << endl;

cout << " IntArray g(5, 8);" << endl;

cout << " f = g;" << endl << endl;

csis << "7. Array assigned to another array w/ different indices: IntArray f(1, 4);" << endl;

csis << " IntArray g(5, 8);" << endl;

csis << " f = g;" << endl << endl;

IntArray f(1, 4);

for(int i = f.low(); i <= f.high(); i++)

f[i] = i * 10;

f.setName("f");

cout << f << endl;

csis << f << endl;

IntArray g(5, 8);

for(int i = g.low(); i <= g.high(); i++)

g[i] = i * 10;

g.setName("g");

cout << g << endl;

csis << g << endl;

wait();

f = g;

cout << f << endl;

cout << g << endl;

csis << f << endl;

csis << g << endl;

wait();

}

void test8() {

cout << "8. Multiple array assignment with different indices: IntArray j(3, 6);" << endl;

cout << " IntArray k(6, 9);" << endl;

cout << " IntArray l(1, 4);" << endl;

cout << " j = k = l;" << endl << endl;

csis << "8. Multiple array assignment with different indices: IntArray j(3, 6);" << endl;

csis << " IntArray k(6, 9);" << endl;

csis << " IntArray l(1, 4);" << endl;

csis << " j = k = l;" << endl << endl;

IntArray j(3, 6);

for(int i = j.low(); i <= j.high(); i++)

j[i] = i * 10;

j.setName("j");

cout << j << endl;

csis << j << endl;

IntArray k(6, 9);

for(int i = k.low(); i <= k.high(); i++)

k[i] = i * 10;

k.setName("k");

cout << k << endl;

csis << k << endl;

IntArray l(1, 4);

for(int i = l.low(); i <= l.high(); i++)

l[i] = i * 10;

l.setName("l");

cout << l << endl;

csis << l << endl;

wait();

j = k = l;

cout << j << endl;

cout << k << endl;

cout << l << endl;

csis << j << endl;

csis << k << endl;

csis << l << endl;

wait();

}

void test9() {

cout << "9. Overloaded equality operator (identical elements): IntArray m(3, 7);" << endl;

cout << " IntArray n(1, 5);" << endl;

cout << " m == n" << endl << endl;

csis << "9. Overloaded equality operator (identical elements): IntArray m(3, 7);" << endl;

csis << " IntArray n(1, 5);" << endl;

csis << " m == n" << endl << endl;

IntArray m(3, 7);

for(int i = m.low(); i <= m.high(); i++)

m[i] = i * 10;

m.setName("m");

cout << m << endl;

csis << m << endl;

IntArray n(1, 5);

for(int i = n.low(); i <= n.high(); i++)

n[i] = i * 10;

n.setName("n");

cout << n << endl;

csis << n << endl;

wait();

m = n;

cout << m << endl;

cout << n << endl;

cout << "Returns " << (m == n ? "True." : "False.") << endl << endl;

csis << m << endl;

csis << n << endl;

csis << "Returns " << (m == n ? "True." : "False.") << endl << endl;

wait();

}

void test10() {

cout << "10. Overloaded equality operator (different elements): IntArray o(3, 7);" << endl;

cout << " IntArray p(1, 5);" << endl;

cout << " o == p" << endl << endl;

csis << "10. Overloaded equality operator (different elements): IntArray o(3, 7);" << endl;

csis << " IntArray p(1, 5);" << endl;

csis << " o == p" << endl << endl;

IntArray o(3, 7);

for(int i = o.low(); i <= o.high(); i++)

o[i] = i * 10;

o.setName("o");

cout << o << endl;

csis << o << endl;

IntArray p(1, 5);

for(int i = p.low(); i <= p.high(); i++)

p[i] = i * 10;

p.setName("p");

cout << p << endl;

cout << "Returns " << (o == p ? "True." : "False.") << endl << endl;

csis << p << endl;

csis << "Returns " << (o == p ? "True." : "False.") << endl << endl;

wait();

}

void test11() {

cout << "11. Overloaded equality operator (different size arrays): IntArray q(1, 3);" << endl;

cout << " IntArray r(1, 4);" << endl;

cout << " q == r;" << endl << endl;

csis << "11. Overloaded equality operator (different size arrays): IntArray q(1, 3);" << endl;

csis << " IntArray r(1, 4);" << endl;

csis << " q == r;" << endl << endl;

IntArray q(1, 3);

for(int i = q.low(); i <= q.high(); i++)

q[i] = i * 10;

q.setName("q");

cout << q << endl;

csis << q << endl;

IntArray r(1, 4);

for(int i = r.low(); i <= r.high(); i++)

r[i] = i * 10;

r.setName("r");

cout << r << endl;

cout << "Returns " << (q == r ? "True." : "False.") << endl << endl;

csis << r << endl;

csis << "Returns " << (q == r ? "True." : "False.") << endl << endl;

wait();

}

void test12() {

cout << "12. Overloaded inequality operator (identical elements): IntArray s(3, 7);" << endl;

cout << " IntArray t(1, 5);" << endl;

cout << " s != t;" << endl << endl;

csis << "12. Overloaded inequality operator (identical elements): IntArray s(3, 7);" << endl;

csis << " IntArray t(1, 5);" << endl;

csis << " s != t;" << endl << endl;

IntArray s(3, 7);

for(int i = s.low(); i <= s.high(); i++)

s[i] = i * 10;

s.setName("s");

cout << s << endl;

csis << s << endl;

IntArray t(1, 5);

for(int i = t.low(); i <= t.high(); i++)

t[i] = i * 10;

t.setName("t");

cout << t << endl;

csis << t << endl;

wait();

s = t;

cout << s << endl;

cout << t << endl;

cout << "Returns " << (s != t ? "True." : "False.") << endl << endl;

csis << s << endl;

csis << t << endl;

csis << "Returns " << (s != t ? "True." : "False.") << endl << endl;

wait();

}

void test13() {

cout << "13. Overloaded inequality operator (different elements): IntArray u(3, 7);" << endl;

cout << " IntArray v(1, 5);" << endl;

cout << " u != v;" << endl << endl;

csis << "13. Overloaded inequality operator (different elements): IntArray u(3, 7);" << endl;

csis << " IntArray v(1, 5);" << endl;

csis << " u != v;" << endl << endl;

IntArray u(3, 7);

for(int i = u.low(); i <= u.high(); i++)

u[i] = i * 10;

u.setName("u");

cout << u << endl;

csis << u << endl;

IntArray v(1, 5);

for(int i = v.low(); i <= v.high(); i++)

v[i] = i * 10;

v.setName("v");

cout << v << endl;

cout << "Returns " << (u != v ? "True." : "False.") << endl << endl;

csis << v << endl;

csis << "Returns " << (u != v ? "True." : "False.") << endl << endl;

wait();

}

void test14() {

cout << "14. Overloaded inequality operator (different size arrays): IntArray w(1, 3);" << endl;

cout << " IntArray x(1, 4);" << endl;

cout << " w != x;" << endl << endl;

csis << "14. Overloaded inequality operator (different size arrays): IntArray w(1, 3);" << endl;

csis << " IntArray x(1, 4);" << endl;

csis << " w != x;" << endl << endl;

IntArray w(1, 3);

for(int i = w.low(); i <= w.high(); i++)

w[i] = i * 10;

w.setName("w");

cout << w << endl;

csis << w << endl;

IntArray x(1, 4);

for(int i = x.low(); i <= x.high(); i++)

x[i] = i * 10;

x.setName("x");

cout << x << endl;

cout << "Returns " << (w != x ? "True." : "False.") << endl << endl;

csis << x << endl;

csis << "Returns " << (w != x ? "True." : "False.") << endl << endl;

wait();

}

void test15() {

cout << "15. Sum of two arrays assigned to third array: IntArray a(1, 5);" << endl;

cout << " IntArray b(4, 8);" << endl;

cout << " IntArray c = a + b;" << endl << endl;

csis << "15. Sum of two arrays assigned to third array: IntArray a(1, 5);" << endl;

csis << " IntArray b(4, 8);" << endl;

csis << " IntArray c = a + b;" << endl << endl;

IntArray a(1, 5);

for(int i = a.low(); i <= a.high(); i++)

a[i] = i * 10;

a.setName("a");

cout << a << endl;

csis << a << endl;

IntArray b(4, 8);

for(int i = b.low(); i <= b.high(); i++)

b[i] = i * 10;

b.setName("b");

cout << b << endl;

csis << b << endl;

wait();

IntArray c = a + b;

c.setName("c");

cout << c << endl;

csis << c << endl;

wait();

}

void test16() {

cout << "16. Sum of two arrays assigned to first array: IntArray d(10, 13);" << endl;

cout << " IntArray e(30, 33);" << endl;

cout << " d += e;" << endl << endl;

csis << "16. Sum of two arrays assigned to first array: IntArray d(10, 13);" << endl;

csis << " IntArray e(30, 33);" << endl;

csis << " d += e;" << endl << endl;

IntArray d(10, 13);

for(int i = d.low(); i <= d.high(); i++)

d[i] = i * 10;

d.setName("d");

cout << d << endl;

csis << d << endl;

IntArray e(30, 33);

for(int i = e.low(); i <= e.high(); i++)

e[i] = i * 10;

e.setName("e");

cout << e << endl;

csis << e << endl;

d += e;

cout << d << endl;

csis << d << endl;

wait();

}

void test17() {

cout << "17. Array declared with illegal array bounds: IntArray f(5, 2);" << endl << endl;

csis << "17. Array declared with illegal array bounds: IntArray f(5, 2);" << endl << endl;

IntArray f(5, 2);

for(int i = f.low(); i <= f.high(); i++)

f[i] = i * 10;

f.setName("f");

cout << f << endl;

csis << f << endl;

wait();

}

void test18() {

cout << "18. Array with index out of range: IntArray g(10);" << endl;

cout << " g[10] = 1;" << endl << endl;

csis << "18. Array with index out of range: IntArray g(10);" << endl;

csis << " g[10] = 1;" << endl << endl;

IntArray g(10);

for(int i = g.low(); i <= g.high(); i++)

g[i] = i * 10;

g.setName("g");

cout << g << endl;

csis << g << endl;

g[10] = 1;

wait();

}

void test19() {

cout << "19. Arrays with length mismatch: IntArray m(1, 4);" << endl;

cout << " IntArray n(2, 4);" << endl;

cout << " m = n;" << endl << endl;

csis << "19. Arrays with length mismatch: IntArray m(1, 4);" << endl;

csis << " IntArray n(2, 4);" << endl;

csis << " m = n;" << endl << endl;

IntArray m(1, 4);

for(int i = m.low(); i <= m.high(); i++)

m[i] = i * 10;

m.setName("m");

cout << m << endl;

csis << m << endl;

IntArray n(2, 4);

for(int i = n.low(); i <= n.high(); i++)

n[i] = i * 10;

n.setName("n");

cout << n << endl;

csis << n << endl;

wait();

m = n;

cout << m << endl;

cout << n << endl;

csis << m << endl;

csis << n << endl;

wait();

}

void test20() {

cout << "20. Array subscript operator: IntArray o(7, 8);" << endl;

cout << " o[7] = 25;" << endl;

cout << " o[8] = o[7];" << endl << endl;

csis << "20. Array subscript operator: IntArray o(7, 8);" << endl;

csis << " o[7] = 25;" << endl;

csis << " o[8] = o[7];" << endl << endl;

IntArray o(7, 8);

for(int i = o.low(); i <= o.high(); i++)

o[i] = i * 10;

o.setName("o");

cout << o << endl;

csis << o << endl;

o[7] = 25;

o[8] = o[7];

cout << o << endl;

csis << o << endl;

wait();

}

*/

void wait() {

char buf;

cout << "Press any key to continue." << endl;

cin.get(buf);

}

//MyCode.h

#ifndef _IntArray_H

#define _IntArray_H

#include

#include

using namespace std;

class IntArray

{

private:

char* name;

int first;

int last;

int length;

int* intPtr;

void outsideRange(int arg);

void illegalBounds(int arg1, int arg2);

void lengthMiss(int length1, int length2);

int getLength();

public:

IntArray();

IntArray(int);

IntArray(int, int);

IntArray(const IntArray&);

~IntArray();

void setName(const char *temp);

char* getName();

int low() const;

int high() const;

int& operator[](int i);

friend ostream& operator<<(ostream&, const IntArray&);

};

#endif // !_IntArray_H

//MyCode.cpp

#include

#include

#include

#include

#include "IntArray.h"

extern ofstream csis;

using namespace std;

IntArray::IntArray()

{

first = 0;

last = 9;

getLength();

intPtr = new int[first, last];

name = new char[1];

}

IntArray::IntArray(int arg)

{

first = 0;

last = arg - 1;

intPtr = new int[first, last];

name = new char[5];

}

IntArray::~IntArray()

{

delete[] intPtr;

delete[] name;

intPtr = NULL;

name = NULL;

}

int IntArray::getLength()

{

length = (last - first) + 1;

return length;

}

int IntArray::low() const

{

return first;

}

int IntArray::high() const

{

return last;

}

void IntArray::setName(const char *arg) //error unresolved external?

{

name = (char*)arg;

}

char* IntArray::getName()

{

return name;

}

ostream& operator<<(ostream& os, const IntArray& intArr)

{

for (int i = intArr.low(); i <= intArr.high(); i++)

os << intArr.getName() << "[" << i << "] = " << intArr[i] << " "; //error says no operator for const IntArray

return os;

}

int& IntArray::operator[](int i)

{

outsideRange(i);

return intPtr[i];

}

void IntArray::outsideRange(int i)

{

if (i < first || i > last)

{

cout << "out of bounds error" << endl;

}

}

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 Reliability Engineering Designing And Operating Resilient Database Systems

Authors: Laine Campbell, Charity Majors

1st Edition

978-1491925942

More Books

Students also viewed these Databases questions

Question

Find the direction cosines of v = (3, 6, 2).

Answered: 1 week ago