In: Computer Science
You are given a source file in your work area for this assignment.
It consists of a declaration for a Val node. There are declarations for three overloaded operator functions, which you must fill in: operator+, operator*, and operator!.
operator+ should implement addition. operator* should implement multiplication.
operator! should reverse the digits of its operand (i.e., of "this") and return the reversed integer. So for example !123 should return 321.
It should be straightforward to reverse an integer. You can extract the least significant digit by using % 10. You can remove the least significant digit by dividing by 10. Other approaches are possible as well.
These operator functions should not be a lot of code. The addition and multiplication can be written in 1-2 lines, and the reverse function within about 10 lines.
***************************************************************************************************************
THIS IS THE GIVEN PROGRAM WHICH I HAVE TO FILL IN.
********************************************************************************************************************
#include <iostream>
using namespace std;
class Val {
int v;
public:
Val(int v=0) : v(v) {}
friend ostream& operator<<(ostream&
out, const Val& v) {
out << v.v;
return out;
}
Val operator+(const Val& o) const {
// FILL IN
}
Val operator*(const Val& o) const {
// FILL IN
}
Val operator!() const {
// FILL IN
}
};
int main()
{
Val values[] = { 2, 44, 19, 4391 };
const int nv = sizeof(values)/sizeof(values[0]);
for( int i=0; i<nv; i++ ) {
cout << values[i] <<
endl;
cout << "!" <<
values[i] << " == " << !values[i] << endl;
for( int j = i+1; j < nv; j++
) {
cout <<
values[j] << endl;
cout <<
values[i] << " + " << values[j] << " == "
<< values[i] + values[j] <<
endl;
cout <<
values[i] << " * " << values[j] << " == "
<< values[i] * values[j] <<
endl;
}
}
return 0;
}
CODE TEXT :
#include <iostream>
using namespace std;
class Val {
int v;
public:
Val(int v=0) : v(v) {}
friend ostream& operator<<(ostream& out, const Val& v) {
out << v.v;
return out;
}
Val operator+(const Val& o) const {
return Val(v+o.v);
}
Val operator*(const Val& o) const {
return Val(v+o.v);
}
Val operator!() const {
int rev = 0, temp = v;
while(temp){
rev = (10*rev) + (temp%10);
temp = temp/10;
}
return Val(rev);
}
};
int main()
{
Val values[] = { 2, 44, 19, 4391 };
const int nv = sizeof(values)/sizeof(values[0]);
for( int i=0; i<nv; i++ ) {
cout << values[i] << endl;
cout << "!" << values[i] << " == " << !values[i] << endl;
for( int j = i+1; j < nv; j++ ) {
cout << values[j] << endl;
cout << values[i] << " + " << values[j] << " == "
<< values[i] + values[j] << endl;
cout << values[i] << " * " << values[j] << " == "
<< values[i] * values[j] << endl;
}
}
return 0;
}
CODE SCREENSHOT :
OUTPUT:
Hope this helps. Please do upvote!