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

来源:互联网 发布:r语言绘制矩阵散点图 编辑:程序博客网 时间:2024/06/05 04:26

Pair.cpp

#include <iostream>using namespace std;//p580template <class T1,class T2>class Pair{private:T1 a;T2 b;public:void setFirst(const T1 &t1){a=t1;}void setSecond(const T2 &t2){b=t2;}T1 &first();T2 &second();T1 first()const {return a;};T2 second()const {return b;};Pair(const T1 &aval,const T2 &bval):a(aval),b(bval){};Pair(){};};template <class T1,class T2>T1 &Pair<T1,T2>::first(){return a;}template <class T1,class T2>T2 &Pair<T1,T2>::second(){return b;}

Wine.cpp

#include <iostream>//#include <vector>#include <valarray>#include <string>#include "Pair.cpp"using namespace std;typedef valarray<int> ArrayInt;typedef Pair<ArrayInt,ArrayInt> PairArray;class Wine{private:string label;PairArray pa;int yearNum;//永远存储年数,即一共有几种年份的public:Wine(const string l,int y,const int yr[],int bot[]){label=l;//int leny=sizeof(yr);//先获取长度//int lenb=sizeof(bot);//yearNum=leny;//yr[]数组中存放的是年份yearNum=y;//已经指明了长度ArrayInt f(yr,y);//构造valarray<int>数组ArrayInt b(bot,y);pa.setFirst(f);pa.setSecond(b);}Wine(const string l,int y){label=l;pa.setFirst(ArrayInt(y));pa.setSecond(ArrayInt(y));yearNum=y;}void GetBottles(){int len=yearNum;int i=0;while(i<len){cout<<"Enter year:";cin>>pa.first()[i];//这个表达式是不是很奇怪?//pa.first()返回的是a,而a的类型是valarry,这个就不奇怪了吧,哈哈cin.get();//记得吃掉这个回车;cout<<"Enter bottles for that year:";cin>>pa.second()[i];cin.get();i++;}}string &Label(){return label;}int sum(){return pa.second().sum();}void show(){int len=yearNum;int i=0;cout<<"Wine:"<<label<<endl;cout<<"     year        bottols"<<endl;for(;i<len;i++){cout<<"     "<<pa.first()[i]<<"        "<<pa.second()[i]<<endl;}}};

main141.cpp

#include <iostream>#include "Wine.cpp"using namespace std;void main141(){cout<<"Enter name of wine:";string lab;cin>>lab;//getline(cin,lab);//用getline,因为可能会有空格//cin.get();cout<<"Enter the number of years:";int yrs;cin>>yrs;Wine holding(lab,yrs);holding.GetBottles();holding.show();const int YRS=3;int y[YRS]={1993,1995,1998};int b[YRS]={48,60,72};Wine more("Gushagning Grap Red",YRS,y,b);more.show();cout<<"Total bottles for "<<more.Label()<<":"<<more.sum()<<endl;cout<<"Byes"<<endl;cin.get();};


0 0
原创粉丝点击