C++Primer Plus 第五版第十章习题参考答案_第1页
C++Primer Plus 第五版第十章习题参考答案_第2页
C++Primer Plus 第五版第十章习题参考答案_第3页
C++Primer Plus 第五版第十章习题参考答案_第4页
C++Primer Plus 第五版第十章习题参考答案_第5页
已阅读5页,还剩21页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第第页C++PrimerPlus第五版第十章习题参考答案C++PrimerPlus第五版第十章习题参考答案

Chapter10

PE10-1

//pe10-1.cpp

#includeiostream

#includecstring

//classdeclaration

classBankAccount

{

private:

charname[40];

characctnum[25];

doublebalance;

public:

BankAccount(char*client=noone,char*num=0,

doublebal=0.0);voidshow(void)const;

voiddeposit(doublecash);voidwithdraw(doublecash);

};

//methoddefinitions

BankAccount::BankAccount(char*client,char*num,doublebal)

{

std::strncpy(name,client,39);

name[39]='\0';

std::strncpy(acctnum,num,24);

acctnum[24]='\0';

balance=bal;

}

voidBankAccount::show(void)const

{

usingstd::cout;

usingstd::endl;

coutClient:nameendl;

coutAccountNumber:acctnumendl;

coutBalance:balanceendl;

}

voidBankAccount::deposit(doublecash)

{

if(cash=0)

C++PrimerPlus第五版第十章习题参考答案

balance+=cash;

else

std::coutIllegaltransactionattempted;

}

voidBankAccount::withdraw(doublecash)

{

if(cash0)

std::coutIllegaltransactionattempted;

elseif(cash=balance)

balance-=cash;

else

std::coutRequestdeniedduetoinsufficientfunds.\n;

}

//sampleuse

intmain()

{

BankAccountbird;

BankAccountfrog(Kermit,croak322,123.00);

bird.show();

frog.show();

bird=BankAccount(Chipper,peep8282,214.00);

bird.show();

frog.deposit(20);

frog.show();

frog.withdraw(4000);

frog.show();

frog.withdraw(50);

frog.show();

}

PE10-4

//pe10-4.h

#ifndefSALES__

#defineSALES__

namespaceSALES

{

constintQUARTERS=4;

C++PrimerPlus第五版第十章习题参考答案

classSales

{

private:

doublesales[QUARTERS];

doubleaverage;

doublema*;

doublemin;

public:

//defaultconstructor

Sales();

//copiesthelesserof4ornitemsfromthearrayar

//tothesalesmemberandcomputesandstoresthe

//average,ma*imum,andminimumvaluesoftheentereditems;//remainingelementsofsales,ifany,setto0

Sales(constdoublear[],intn);

//gatherssalesfor4quartersinteractively,storesthem

//inthesalesmemberofobjectandcomputesandstoresthe

//average,ma*imum,andminumumvalues

voidsetSales();

//displayallinformationinobject

voidshowSales();

};

}

#endif

//pe10-4a.cpp

#includeiostream

#includepe10-4.h

intmain()

{

usingSALES::Sales;

doublevals[3]={2000,3000,5000};

SalesforFiji(vals,3);

forFiji.showSales();

Salesred;

C++PrimerPlus第五版第十章习题参考答案

red.showSales();

red.setSales();

red.showSales();

return0;

}

//pe10-4b.cpp

#includeiostream

#includepe10-4.h

namespaceSALES

{

usingstd::cin;

usingstd::cout;

usingstd::endl;

Sales::Sales(constdoublear[],intn)

{

if(n0)

n=0;

intlimit=nQUARTERS?n:QUARTERS;

doubletotal=0;

min=0;

ma*=0;

average=0;

if(limit0)

min=ma*=ar[0];

inti;

for(i=0;ilimit;i++)

{

sales[i]=ar[i];

total+=ar[i];

if(ar[i]ma*)

ma*=ar[i];

elseif(ar[i]min)

min=ar[i];

}

for(i=limit;iQUARTERS;i++)

sales[i]=0;

if(limit0)

average=total/limit;

}

C++PrimerPlus第五版第十章习题参考答案

Sales::Sales()

{

min=0;

ma*=0;

average=0;

for(inti=0;iQUARTERS;i++)

sales[i]=0;

}

voidSales::setSales()

{

doublesa[QUARTERS];

inti;

for(i=0;iQUARTERS;i++)

{

coutEntersalesforquarteri+1:;

cinsa[i];

}

//createtemporaryobject,copytoinvokingobject

*this=Sales(sa,QUARTERS);

}

voidSales::showSales()

{

coutSales:\n;

for(inti=0;iQUARTERS;i++)

coutQuarteri+1:$

sales[i]endl;

coutAverage:$averageendl;

coutMinimum:$minendl;

coutMa*imum:$ma*endl;

}

}

PE10-5

//pe10stack.h--classdefinitionforthestackADT

//forusewithpe10-5.cpp

#ifndef_STACK_H_

#define_STACK_H_

C++PrimerPlus第五版第十章习题参考答案

structcustomer{

charfullname[35];

doublepayment;

};

typedefcustomerItem;

classStack

{

private:

enum{MA*=10};//constantspecifictoclass

Itemitems[MA*];//holdsstackitems

inttop;//inde*fortopstackitem

public:

Stack();

boolisempty()const;

boolisfull()const;

//push()returnsfalseifstackalreadyisfull,trueotherwise

boolpush(constItemitem);//additemtostack

//pop()returnsfalseifstackalreadyisempty,trueotherwise

boolpop(Itemitem);//poptopintoitem

};

#endif

//pe10stack.cpp--Stackmemberfunctions

//forusewithpe10-5.cpp

//e*actlythesameasstack.cppinthete*t

#includepe10stack.h

Stack::Stack()//createanemptystack

{

top=0;

}

boolStack::isempty()const

{

returntop==0;

}

boolStack::isfull()const

{

returntop==MA*;

C++PrimerPlus第五版第十章习题参考答案

boolStack::push(constItemitem)

{

if(topMA*)

{

items[top++]=item;

returntrue;

}

else

returnfalse;

}

boolStack::pop(Itemitem)

{

if(top0)

{

item=items[--top];

returntrue;

}

else

returnfalse;

}

//pe10-5.cpp

#includeiostream

#includecctype

#includepe10stack.h//modifiedtodefinecustomerstructure//linkwithpe10stack.cpp

voidget_customer(customercu);

intmain(void)

{

usingnamespacestd;

Stackst;//createastackofcustomerstructures

customertemp;

doublepayments=0;

charc;

coutPleaseenterAtoaddacustomer,\n

Ptoprocessacustomer,andQtoquit.\n;

while(cinc(c=toupper(c))!='Q')

{

C++PrimerPlus第五版第十章习题参考答案

while(cin.get()!='\n')

continue;

if(c!='A'c!='P')

{

coutPleaserespondwithA,P,orQ:;

continue;

}

switch(c)

{

case'A':if(st.isfull())

coutstackalreadyfull\n;else

{

get_customer(temp);

st.push(temp);

}

break;

case'P':if(st.isempty())

coutstackalreadyempty\n;else{

st.pop(temp);

payments+=temp.payment;

couttemp.fullnameprocessed.;coutPaymentsnowtotal$payments\n;

}

break;

default:coutWhoops!Programmingerror!\n;}

coutPleaseenterAtoaddacustomer,\n

Ptoprocessacustomer,andQtoquit.\n;

}

coutDone!\n;

return0;

}

voidget_customer(customercu)

{

usingnamespacestd;

coutEntercustomername:;

cin.getline(cu.fullname,35);

coutEntercustomerpayment:;

cincu.payment;

while(cin.get()!='\n')

C++PrimerPlus第五版第十章习题参考答案

continue;

}

PE10-8

//pe10-8arr.h--headerfileforasimplelistclass

#ifndefSIMPLEST_

#defineSIMPLEST_

//program-specificdeclarations

constintTSIZE=45;//sizeofarraytoholdtitlestructfilm

{

chartitle[TSIZE];

intrating;

};

//generaltypedefinitions

typedefstructfilmItem;

constintMA*LIST=10;

classsimplist

{

private:

Itemitems[MA*LIST];

intcount;

public:

simplist(void);

boolisempty(void);

boolisfull(void);

intitemcount();

booladditem(Itemitem);

voidtransverse(void(*pfun)(Itemitem));

};

#endif

//pe10-8arr.cpp--functionssupportingsimplelistoperations#includepe10-8arr.h

simplist::simplist(void)

{

C++PrimerPlus第五版第十章习题参考答案

count=0;

}

boolsimplist::isempty(void)

{

returncount==0;

}

boolsimplist::isfull(void)

{

returncount==MA*LIST;

}

intsimplist::itemcount()

{

returncount;

}

boolsimplist::additem(Itemitem)

{

if(count==MA*LIST)

returnfalse;

else

items[count++]=item;

returntrue;

}

voidsimplist::transverse(void(*pfun)(Itemitem))

{

for(inti=0;icount;i++)

(*pfun)(items[i]);

}

//pe10-8.cpp--usingaclassdefinition

#includeiostream

#includecstdlib//prototypefore*it()

#includepe10-8arr.h//simplelistclassdeclaration//arrayversionvoidshowmovies(Itemitem);//tobeusedbytransverse()

intmain(void)

{

usingnamespacestd;

C++PrimerPlus第五版第十章习题参考答案

simplistmovies;//createsanemptylist

Itemtemp;

if(movies.isfull())//invokesisfull()memberfunction{

coutNomoreroominlist!Bye!\n;

e*it(1);

}

coutEnterfirstmovietitle:\n;

while(cin.getline(temp.title,TSIZE)temp.title[0]!='\0'){

coutEnteryourrating0-10:;

cintemp.rating;

while(cin.get()!='\n')

continue;

if(movies.additem(temp)==false)

{

coutListalreadyisfull!\n;

break;

}

if(movies.isfull())

{

coutYouhavefilledthelist.\n;

break;

}

coutEnterne*tmovietitle(emptylinetostop):\n;}

if(movies.isempty())

coutNodataentered.;

else

{

coutHereisthemovielist:\n;

movies.transverse(showmovies);

}

coutBye!\n;

return0;

}

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论