//stonewt.h
#ifndef STONEWT_H
#define STONEWT_H
#include<iostream>
namespace STONEWT
{
class Stonewt{
public:
enum Mode{STONE,POUNDS};
private:
enum {Lbs_per_stn =14};
int stone;
double pds_left;
double pounds;
enum Mode mode;
public:
Stonewt(double lbs,Mode mode1);
Stonewt(int stn,double lbs,Mode mode1);
Stonewt();
~Stonewt();
void S_mode();
void P_mode();
Stonewt operator+(const Stonewt & s)const;
Stonewt operator-(const Stonewt &s)const;
Stonewt operator*(const int n)const;
friend std::ostream& operator<<(std::ostream &os,const Stonewt &s);
};
}
#endif
//stonewt.cpp
#include"stonewt.h"
namespace STONEWT
{
using std::cout;
Stonewt::Stonewt(double lbs,Mode mode1)
{
stone = int(lbs)/Lbs_per_stn;
pds_left = int(lbs)%Lbs_per_stn+lbs-int(lbs);
pounds= lbs;
mode=mode1;
}
Stonewt::Stonewt(int stn,double lbs ,Mode mode1)
{
stone= stn;
pds_left=lbs;
pounds = stn*Lbs_per_stn +lbs;
mode =mode1;
}
Stonewt ::Stonewt()
{
stone = pounds = pds_left = 0;
mode=STONE;
}
Stonewt::~Stonewt()
{
}
void Stonewt:: S_mode(){
mode=STONE;
}
void Stonewt:: P_mode()
{
mode = POUNDS;
}
Stonewt Stonewt::operator+(const Stonewt & s)const
{
Stonewt result;
result.pounds=s.pounds+pounds;
result.stone = int(result.pounds)/Lbs_per_stn;
result.pds_left = int(result.pounds)%Lbs_per_stn+result.pounds-int(result.pounds);
return result;
}
Stonewt Stonewt:: operator-(const Stonewt &s)const
{
Stonewt result;
result.pounds =pounds-s.pounds;
result.stone = int(result.pounds)/Lbs_per_stn;
result.pds_left = int(result.pounds)%Lbs_per_stn+result.pounds-int(result.pounds);
return result;
}
Stonewt Stonewt::operator*(const int n)const
{
Stonewt result;
result.pounds =pounds*n;
result.stone = int(result.pounds)/Lbs_per_stn;
result.pds_left = int(result.pounds)%Lbs_per_stn+result.pounds-int(result.pounds);
return result;
}
std::ostream & operator<<(std::ostream &os,const Stonewt &s)
{
if( s.mode==Stonewt::STONE)
{
os<<s.stone<<" stone, "<< s.pds_left <<" pounds\n";
}
if(s.mode ==Stonewt::POUNDS)
{
os<<s.pounds<<" pounds\n";
}
return os;
}
}
//main.cpp
#include"stonewt.h"
int main()
{
using std::cout;
using STONEWT::Stonewt;
Stonewt result;
Stonewt incogo (275,Stonewt::POUNDS);
Stonewt wolf(2,34.5,Stonewt::STONE);
cout<<incogo<<std::endl;
cout<<wolf<<std::endl;
incogo.S_mode();
cout<<incogo<<std::endl;
wolf.P_mode();
cout<<wolf<<std::endl;
cout<<"incogo-wolf: "<<incogo-wolf<<std::endl;
cout<<"incogo+wolf: "<<incogo+wolf<<std::endl;
cout<<"incogo*2: "<<incogo*2<<std::endl;
system("pause");
}
11.5
最新推荐文章于 2021-05-28 22:28:39 发布