Please help me with this entire C++ lab example. I know it looks long but i prom
ID: 3860738 • Letter: P
Question
Please help me with this entire C++ lab example. I know it looks long but i promise most of it are just explanations. I will provide the given codes below the pictured instructions. thank you so much
-------------------------------------------------------------------------------------------------------------------------
// 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 <iostream>
#include <iomanip>
#include <fstream>
#include <stdlib.h>
#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);
}
Explanation / Answer
main.cpp
--------------------
#include <iostream>
#include <iomanip>
#include <fstream>
#include <stdlib.h>
#include "iadrv.h"
#include "IntArray.h"
using namespace std;
ofstream csis;
void wait() ;
int main() {
csis.open("csis");
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);
}
----------------------------------------------
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
----------------------------------------------
IntArray.cpp
-------------------------------
#include "IntArray.h"
#include <fstream>
extern ofstream csis;
IntArray::IntArray(){
min = 0;
max = 9;
size = 10;
array[size];}
IntArray::IntArray(int upper){
min = 0;
max = upper - 1;
size = upper;
array[size];}
IntArray::IntArray(int lower, int upper){
if (lower > upper) {
cout << "Error: Lower boundary out of range - Program Halt..." << endl;
csis << "Error: Lower boundary out of range - Program Halt..." << endl;
}
else if (lower == upper) {
min = lower;
max = upper;
size = 1;
array[size];
}
else {
min = lower;
max = upper;
size = ((upper) - (lower)) + 1;
array[size];
}
}
IntArray::IntArray(const IntArray& arr)
{
min = arr.min;
max = arr.max;
size = arr.size;
for (int i = arr.min; i <= arr.max; i++) {
array[i] = arr.array[i];
}
}
void IntArray::setName(string s)
{
name = s;
}
int IntArray::low()
{
return min;
}
int IntArray::high()
{
return max;
}
IntArray& IntArray::operator=(IntArray& arr)
{
min = arr.min;
max = arr.max;
int offset = arr.min;
int* ptr = (arr.array+offset);
if (size != arr.size) {
cout << "Error: Size mismatch. Program halt..." << endl << endl;
csis << "Error: Size mismatch. Program halt..." << endl << endl;
}
for (int i = min; i <= max; i++) {
array[i] = *(ptr+i);
}
return *this;
}
int IntArray::operator==(IntArray& arr)
{
int offset = arr.min;
int* ptr1 = (array+min);
int* ptr2 = (arr.array+offset);
int check = 0;
if ( (size) == (arr.size) ) {
for (int i = min; i <= max; i++) {
if ( *(ptr1+i) == *(ptr2+i) ) {
check = 1;
}
else {
return 0;
}
}
}
return check;
}
int IntArray::operator!=(IntArray& arr)
{
int offset = arr.min;
int* ptr1 = (array+min);
int* ptr2 = (arr.array+offset);
int check = 1;
if ( (size) == (arr.size) ) {
for (int i = min; i <= max; i++) {
if ( *(ptr1+i) == *(ptr2+i) ) {
check = 0;
}
else {
return 1;
}
}
}
return check;
}
int& IntArray::operator[](int val)
{
if (val < min || val > max) {
cout << "Error: Out of legal range. Program halt..." << endl;
csis << "Error: Out of legal range. Program halt..." << endl << endl;
}
return val;
}
void IntArray::operator+=(IntArray& arr)
{
int offset = arr.min;
int* ptr = (arr.array+offset);
if ( (max - min) != (arr.max - arr.min) ) {
cout << "Error: Must have same number of elements. Program halt..." << endl;
csis << "Error: Must have same number of elements. Program halt..." << endl;
}
else {
for (int i = min; i <= max; i++) {
array[i] = *(array+i) + *(ptr+i);
}
}
}
IntArray operator+(IntArray& arr1, IntArray& arr2)
{
IntArray temp(arr1.size);
int offset = arr1.min;
int offset2 = arr2.min;
int* ptr1 = (arr1.array+offset);
int* ptr2 = (arr2.array+offset2);
if ( (arr1.size) != (arr2.size) ) {
cout << "Error: Must have same number of elements. Program halt..." << endl;
csis << "Error: Must have same number of elements. Program halt..." << endl;
}
else {
for (int i = 0; i <= temp.size; i++) {
temp.array[i] = *(ptr1+i) + *(ptr2+i);
}
}
return IntArray(temp);
}
ostream& operator<<(ostream& os, const IntArray& arr)
{
if (arr.min == arr.max) {
int i = arr.min;
os << arr.name << "[" << i << "] = " << arr.array[i] << endl;
}
else {
for (int i = arr.min; i <= arr.max; i++) {
os << arr.name << "[" << i << "] = " << arr.array[i] << endl;
}
}
return os;
}
----------------------------------------------
IntArray.h
-------------------------------
#ifndef __Operator_Overloading_Lab__IntArray__
#define __Operator_Overloading_Lab__IntArray__
#include <iostream>
using namespace std;
class IntArray {
private:
string name;
int min;
int max;
int size;
int array[];
public:
IntArray();
IntArray(int);
IntArray(int, int);
IntArray(const IntArray&);
void setName(string);
int low();
int high();
IntArray& operator=(IntArray&);
int operator==(IntArray&);
int operator!=(IntArray&);
int& operator[](int);
void operator+=(IntArray&);
friend IntArray operator+(IntArray&, IntArray&);
friend ostream& operator<<(ostream&, const IntArray&);
};
#endif
---------------------------------
csis.txt
-------------------------------
1. Array declared with single integer: IntArray a(10);
a[0] = 0
a[1] = 10
a[2] = 20
a[3] = 30
a[4] = 40
a[5] = 50
a[6] = 60
a[7] = 70
a[8] = 80
a[9] = 90
2. Array declared with two integers: IntArray b(-3, 6);
b[-30] = 1
b[-29] = 1606416256
b[-28] = 32767
b[-27] = 2046468856
b[-26] = 32767
b[-25] = 41600
b[-24] = 1
b[-23] = 65666
b[-22] = 1
b[-21] = 25090
b[-20] = 0
3. Array declared with two integers: IntArray c(6, 8);
c[6] = 60
c[7] = 70
c[8] = 80
4. Array declared with two identical integers: IntArray d(5, 5);
d[5] = 50
5. Array declared with no integers: IntArray z;
z[0] = 0
z[1] = 10
z[2] = 20
z[3] = 30
z[4] = 40
z[5] = 50
z[6] = 60
z[7] = 70
z[8] = 80
z[9] = 90
6. Array declared with another object of type IntArray: IntArray c(6, 8);
Intarray e(c);
c[6] = 60
c[7] = 70
c[8] = 80
e[6] = 60
e[7] = 70
e[8] = 80
7. Array assigned to another array w/ different indices: IntArray f(1, 4);
IntArray g(5, 8);
f = g;
f[1] = 10
f[2] = 20
f[3] = 30
f[4] = 40
g[5] = 50
g[6] = 60
g[7] = 70
g[8] = 80
f[5] = 1
f[6] = 41600
f[7] = 5
f[8] = 26114
g[5] = 50
g[6] = 60
g[7] = 70
g[8] = 80
8. Multiple array assignment with different indices: IntArray j(3, 6);
IntArray k(6, 9);
IntArray l(1, 4);
j = k = l;
j[3] = 30
j[4] = 40
j[5] = 50
j[6] = 60
k[6] = 60
k[7] = 70
k[8] = 80
k[9] = 90
l[1] = 10
l[2] = 20
l[3] = 30
l[4] = 40
j[1] = 30
j[2] = 40
j[3] = 1
j[4] = 70600
k[1] = 20
k[2] = 30
k[3] = 40
k[4] = 1
l[1] = 10
l[2] = 20
l[3] = 30
l[4] = 40
9. Overloaded equality operator (identical elements): IntArray m(3, 7);
IntArray n(1, 5);
m == n
m[3] = 30
m[4] = 40
m[5] = 50
m[6] = 60
m[7] = 70
n[1] = 10
n[2] = 20
n[3] = 30
n[4] = 40
n[5] = 50
m[1] = 20
m[2] = 30
m[3] = 40
m[4] = 50
m[5] = 1
n[1] = 10
n[2] = 20
n[3] = 30
n[4] = 40
n[5] = 50
Returns False.
10. Overloaded equality operator (different elements): IntArray o(3, 7);
IntArray p(1, 5);
o == p
o[3] = 30
o[4] = 40
o[5] = 50
o[6] = 60
o[7] = 70
p[1] = 10
p[2] = 20
p[3] = 30
p[4] = 40
p[5] = 50
Returns False.
11. Overloaded equality operator (different size arrays): IntArray q(1, 3);
IntArray r(1, 4);
q == r;
q[1] = 10
q[2] = 20
q[3] = 30
r[1] = 10
r[2] = 20
r[3] = 30
r[4] = 40
Returns False.
12. Overloaded inequality operator (identical elements): IntArray s(3, 7);
IntArray t(1, 5);
s != t;
s[3] = 30
s[4] = 40
s[5] = 50
s[6] = 60
s[7] = 70
t[1] = 10
t[2] = 20
t[3] = 30
t[4] = 40
t[5] = 50
s[1] = 20
s[2] = 30
s[3] = 40
s[4] = 50
s[5] = 5
t[1] = 10
t[2] = 20
t[3] = 30
t[4] = 40
t[5] = 50
Returns True.
13. Overloaded inequality operator (different elements): IntArray u(3, 7);
IntArray v(1, 5);
u != v;
u[3] = 30
u[4] = 40
u[5] = 50
u[6] = 60
u[7] = 70
v[1] = 10
v[2] = 20
v[3] = 30
v[4] = 40
v[5] = 50
Returns True.
14. Overloaded inequality operator (different size arrays): IntArray w(1, 3);
IntArray x(1, 4);
w != x;
w[1] = 10
w[2] = 20
w[3] = 30
x[1] = 10
x[2] = 20
x[3] = 30
x[4] = 40
Returns True.
15. Sum of two arrays assigned to third array: IntArray a(1, 5);
IntArray b(4, 8);
IntArray c = a + b;
a[1] = 10
a[2] = 20
a[3] = 30
a[4] = 40
a[5] = 50
b[4] = 40
b[5] = 50
b[6] = 60
b[7] = 70
b[8] = 80
c[0] = 50
c[1] = 70
c[2] = 90
c[3] = 110
c[4] = 130
16. Sum of two arrays assigned to first array: IntArray d(10, 13);
IntArray e(30, 33);
d += e;
d[10] = 100
d[11] = 110
d[12] = 120
d[13] = 130
e[30] = 300
e[31] = 310
e[32] = 320
e[33] = 330
d[10] = 321
d[11] = 70930
d[12] = 121
d[13] = 41730
17. Array declared with illegal array bounds: IntArray f(5, 2);
Error: Lower boundary out of range - Program Halt...
18. Array with index out of range: IntArray g(10);
g[10] = 1;
g[0] = 0
g[1] = 10
g[2] = 20
g[3] = 30
g[4] = 40
g[5] = 50
g[6] = 60
g[7] = 70
g[8] = 80
g[9] = 90
Error: Out of legal range. Program halt...
19. Arrays with length mismatch: IntArray m(1, 4);
IntArray n(2, 4);
m = n;
m[1] = 10
m[2] = 20
m[3] = 30
m[4] = 40
n[2] = 20
n[3] = 30
n[4] = 40
Error: Size mismatch. Program halt...
m[2] = 40
m[3] = 36062
m[4] = 1
n[2] = 20
n[3] = 30
n[4] = 40
20. Array subscript operator: IntArray o(7, 8);
o[7] = 25;
o[8] = o[7];
o[7] = 70
o[8] = 80
o[7] = 25
o[8] = 25
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.