list.h
#pragma once
#ifndef list_H_
#define list_H_
#include <iostream>
using namespace std;
class Stonewt {
private:
static const int Lbs_per_stn = 14;
enum Mode { BP, INT_GBP, FLOAT_GBP };
Mode mode;
int stone;
double pds_left;
double pounds;
public:
Stonewt(double lbs,Mode from = BP);
Stonewt(int stn, double lbs, Mode from = BP);
void set_modeBP();
void set_modeINT_GBP();
void set_modeFLOAT_GBP();
Stonewt operator + (const Stonewt & a);
Stonewt operator -(const Stonewt & a);
Stonewt operator *(double n);
friend Stonewt operator *(double n, Stonewt & a);
friend ostream & operator <<(ostream & os, Stonewt & t);
Stonewt();
~Stonewt();
};
#endif
function.cpp
#include "list.h"
#include <iostream>
Stonewt::Stonewt()
{
stone = pds_left = pounds = 0;
mode = BP;
}
Stonewt::Stonewt(double lbs, Mode from)
{
mode = from;
stone = int(lbs) / Lbs_per_stn;
pds_left = int(lbs) % Lbs_per_stn + lbs - int(lbs);
pounds = lbs;
}
Stonewt::Stonewt(int stn, double lbs, Mode from)
{
mode = from;
stone = stn;
pds_left = lbs;
pounds = stn*Lbs_per_stn + lbs;
}
Stonewt::~Stonewt()
{
}
void Stonewt::set_modeBP()
{
mode = BP;
}
void Stonewt::set_modeINT_GBP()
{
mode = INT_GBP;
}
void Stonewt::set_modeFLOAT_GBP()
{
mode = FLOAT_GBP;
}
Stonewt Stonewt::operator+(const Stonewt & a)
{
Stonewt sum_1;
sum_1.pounds = pounds + a.pounds;
Stonewt sum_2(sum_1.pounds);
return sum_2;
}
Stonewt Stonewt::operator-(const Stonewt & a)
{
Stonewt less_1;
less_1.pounds = pounds - a.pounds;
Stonewt less_2(less_1.pounds);
return less_2;
}
Stonewt Stonewt::operator*(double n)
{
Stonewt mult_1;
mult_1.pounds = pounds*n;
Stonewt mult_2(mult_1.pounds);
return mult_2;
}
Stonewt operator*(double n, Stonewt & a)
{
return a*n;
}
ostream & operator<<(ostream & os, Stonewt & t)
{
if (t.mode == Stonewt::BP)
os << t.stone + t.pds_left << " BP";
else if (t.mode== Stonewt::INT_GBP)
os << int(t.pounds) << " GBP";
else if (t.mode == Stonewt::FLOAT_GBP)
os << t.pounds << " GBP";
else
os << "Error\n";
return os;
}
main.cpp
#include "list.h"
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
Stonewt wolfe(285.7);
Stonewt taft(21, 8);
cout << "wolfe: \n";
cout << "BP: " << wolfe << endl;
wolfe.set_modeINT_GBP();
cout << "Int GBP: " << wolfe << endl;
wolfe.set_modeFLOAT_GBP();
cout << "Float GBP: " << wolfe << endl;
wolfe = taft + wolfe;
cout << "wolfe(sum): ";
cout << "BP: " << wolfe << endl;
wolfe = taft - wolfe;
cout << "wolfe(less): " << wolfe << endl;
wolfe = wolfe * 1.74;
cout << "wolfe(multiply): " << wolfe << endl;
system("pause");
return 0;
}