C++primer plus第六版课后编程题答案11.6

来源:互联网 发布:反洗钱系统数据抓取 编辑:程序博客网 时间:2024/05/17 08:22

stonwth.h

#ifndef STONEWT_h_#define STONEWT_h_#include <iostream>using namespace std;enum Mode{STONE,POUNDS};//方便main115,cppclass Stonewth{private:enum {Lbs_per_stn=14};Mode mode;int stone;double pds_left;double pounds;public:Stonewth(double lbs){mode=POUNDS;//用于控制输出什么格式stone=int(lbs)/Lbs_per_stn;pds_left=int(lbs)%Lbs_per_stn+lbs-int(lbs);pounds=lbs;};Stonewth(){mode=POUNDS;//默认为镑stone=pds_left=pounds=0;};Stonewth(int stn,double lbs){mode=POUNDS;stone=stn;pds_left=lbs;pounds=stn*Lbs_per_stn+lbs;};void setMode(Mode form=STONE){if(form==STONE)mode=STONE;else if(form==POUNDS)mode=POUNDS;elsecout<<"Invail mode !"<<endl;}Stonewth operator+(const Stonewth &s)const//这里我就选最简单的了{double newpounds=pounds+s.pounds;return Stonewth(newpounds);}Stonewth operator-(const Stonewth &s)const{double newpounds=pounds-s.pounds;return Stonewth(newpounds);}Stonewth operator*(double m)const//我这里选择重载常数*{double newpounds=pounds*m;return Stonewth(newpounds);}//11.6bool operator<(const Stonewth &s){return pounds>s.pounds;}bool operator>(const Stonewth &s){return s.pounds<pounds;}friend ostream& operator<<(ostream &os,const Stonewth &s){if(s.mode==STONE)os<<s.stone<<"  stone!"<<endl;else if(s.mode==POUNDS)os<<s.pounds+s.pds_left<<"  pounds!"<<endl;elseos<<"error!"<<endl;return os;}};#endif

main116.cpp

#include <iostream>#include "stonewt.h"using namespace std;void main116(){Stonewth s[6]={10,9.5,19};//Stonewth s1=10;//cout<<s1<<endl;Stonewth temp(11);for(int i=0;i<3;i++)cout<<s[i]<<endl;for(int i=3;i<6;i++){cout<<"enter the pounds:"<<endl;double in;cin>>in;s[i]=in;}//没有重载=,懒得重载了,这里会有点问题,自己改下Stonewth max=-999;Stonewth min=999;for(int i=0;i<6;i++){if(max<s[i])max=s[i];if(min>s[i])min=s[i];if(s[i]>temp)cout<<s[i]<<endl;}cout<<"max="<<max<<"   min="<<min<<endl;cin.get();cin.get();}


0 0