C++ Primer Plus第五版 第10章 编程练习答案

来源:互联网 发布:钉钉阿里云code机器人 编辑:程序博客网 时间:2024/06/14 22:53
/*******************************************************************************************************************  Author : Cui mingyang Blog : cx_12586 Time : 2017/10/19 From : C++ Primer Plus第五版第10章编程练习 第1题   *******************************************************************************************************************///头文件#ifndef ACCOUNT_H_#define ACCOUNT_H_using namespace std;class Account{private:string name;string account;double savings;public:Account();Account(const string &n,const string &a ,const double money);void show()const;void save(const double money);void withdraw(const double money);~Account();};#endif//头文件对应的cpp文件#include<iostream>#include <string>#include "Account.h"Account::Account(){name = " ";account = " ";savings =0;}Account::Account(const string  &n,const string &a ,const double money){name = n;account = a;savings = money;}Account::~Account(){cout << "Bye.\n";}void Account::show()const{cout << "The name is : " << name << endl;cout << "The account is : "<< account <<endl;cout << "The saving is : " << savings <<endl;}void Account::save(const double money){if (money <0){cerr << "The number of saving can't be negative.\n";}elsesavings+=money;}void Account::withdraw(const double money){if (money > savings){cerr << "The number of withdrawing can't be bigger than savings.\n";}elsesavings-=money;}//演示主程序#include<iostream>#include "Account.h"int main(){Account account1("Bob Smith","452164146413541641",7800);account1.show();account1.save(1200);account1.show();account1.save(-1200);account1.show();account1.withdraw(2000);account1.show();account1.withdraw(20000);account1.show();system("pause");return 0;}


/*******************************************************************************************************************  Author : Cui mingyang Blog : cx_12586 Time : 2017/11/17 From : C++ Primer Plus第五版第10章编程练习 第2题   *******************************************************************************************************************///头文件#ifndef PERSON_H_#define PERSON_H_using namespace std;#include<string>class Person{private:static const int LIMIT =25;string lname;char fname[LIMIT];public:Person(){lname="";fname[0]='\0';}Person(const string & ln,const char *fn= "Heyyou");void show() const;void FormalShow()const;};#endif//头文件对应的cpp文件#include<iostream>#include<cstring>#include"Person.h"using namespace std;Person::Person(const string & ln,const char *fn){lname = ln;strncpy(fname,fn,LIMIT-1);fname[LIMIT-1]='\0';}void Person::show() const{cout << "The name is : " << fname << " " << lname <<endl;}void Person::FormalShow()const{cout << "The name is : " << lname << " " << fname <<endl;}//演示主程序#include<iostream>#include"Person.h"int main(){Person one;Person two("Smythcraft");Person three("Dimwiddy","Sam");one.show();cout << endl;one.FormalShow();cout << endl;two.show();cout << endl;two.FormalShow();cout << endl;three.show();cout << endl;three.FormalShow();cout << endl;system("pause");return 0;}

/*******************************************************************************************************************  Author : Cui mingyang Blog : cx_12586 Time : 2017/11/17 From : C++ Primer Plus第五版第10章编程练习 第3题   *******************************************************************************************************************///头文件#ifndef GOLF_H_#define GOLF_H_const int Len = 40; class Golf{private:char fullname[Len];  int handicap; public:Golf(const char *name, int hc); Golf();  void set_handicap(int hc);  void showgolf()const; };#endif//头文件对应的cpp文件#include "golf.h"#include<iostream>#include<cstring>using namespace std;Golf::Golf(const char *name, int hc){strcpy(fullname, name);  handicap = hc;  }Golf::Golf(){strcpy(fullname, "");  handicap = 0;  }void Golf::set_handicap(int hc){handicap = hc;  }void Golf::showgolf()const{cout << fullname << endl;cout << handicap << endl;  }//演示主程序#include <iostream>  #include "golf.h" using namespace std;int main()  {  Golf Ann( "Ann Birdfree", 24);  cout << "The recorded name and handicap are: \n";  Ann.showgolf();Ann.set_handicap(66);  cout << "Your amended name and handicap are: \n";Ann.showgolf(); system("pause");return 0;  }  

/*******************************************************************************************************************  Author : Cui mingyang Blog : cx_12586 Time : 2017/11/17 From : C++ Primer Plus第五版第10章编程练习 第4题   *******************************************************************************************************************///头文件#ifndef SALES__#define SALES__namespace SALES{const int QUARTERS = 4;class Sales{private:double sales[QUARTERS];double average;double max;double min;public:// default constructorSales();// copies the lesser of 4 or n items from the array ar// to the sales member and computes and stores the// average, maximum, and minimum values of the entered items;// remaining elements of sales, if any, set to 0Sales(const double ar[], int n);// gathers sales for 4 quarters interactively, stores them// in the sales member of object and computes and stores the// average, maximum, and minumum valuesvoid setSales();// display all information in objectvoid showSales();};}#endif//头文件对应的cpp文件#include <iostream>#include "Sale.h"namespace SALES{using std::cin;using std::cout;using std::endl;Sales::Sales(const double ar[], int n){if (n < 0)n = 0;int limit = n < QUARTERS ? n : QUARTERS;double total = 0;min = 0;max = 0;average = 0;if (limit > 0)min = max = ar[0];int i;for (i = 0; i < limit; i++){sales[i] = ar[i];total += ar[i];if (ar[i] > max)max = ar[i];else if (ar[i] < min)min = ar[i];}for (i = limit; i < QUARTERS; i++)sales[i] = 0;if (limit > 0)average = total / limit;}Sales::Sales(){min = 0;max = 0;average = 0;for (int i = 0; i < QUARTERS; i++)sales[i] =0;}    void Sales::setSales(){double sa[QUARTERS];int i;for (i = 0; i < QUARTERS; i++){cout << "Enter sales for quarter " << i + 1 << ": ";cin >> sa[i];}// create temporary object, copy to invoking object*this = Sales(sa, QUARTERS);}void Sales::showSales(){cout << "Sales:\n";for (int i = 0; i < QUARTERS; i++)cout << "Quarter " << i + 1 << ": $"<< sales[i] << endl;cout << "Average: $" << average << endl;cout << "Minimum: $" << min << endl;cout << "Maximum: $" << max << endl;}}//演示主程序#include<iostream>using namespace std;int main(){system("pause");return 0;}#include <iostream>#include "Sale.h"int main(){using SALES::Sales;double vals[3] = {2000, 3000, 5000};Sales forFiji(vals, 3);forFiji.showSales();Sales red;red.showSales();red.setSales();red.showSales();system("pause");return 0;}

/*******************************************************************************************************************  Author : Cui mingyang Blog : cx_12586 Time : 2017/11/17 From : C++ Primer Plus第五版第10章编程练习 第5题   *******************************************************************************************************************///头文件#ifndef STACK_H_#define STACK_H_struct customer{char fullname[35];double payment;};typedef customer Item;class Stack{private:enum {MAX=10};Item items[MAX];int top;public:Stack();bool isempty()const;bool isfull()const;bool push(const Item &item);bool pop(Item &item);};#endif//头文件对应的cpp文件#include "Stack.h"Stack::Stack(){top = 0;}bool Stack::isempty()const{return top == 0;}bool Stack::isfull()const{return top == MAX;}bool Stack::push(const Item &item){if (top < MAX){items[top++] = item;return true;}elsereturn false;}bool Stack::pop(Item &item){if (top > 0){item = items[--top];return true;}elsereturn false;}//演示主程序#include <iostream>#include <cctype>#include "Stack.h"    void get_customer(customer & cu);int main(void){using namespace std;Stack st; // create a stack of customer structurescustomer temp;double payments = 0;char c;cout << "Please enter A to add a customer,\n"<< "P to process a customer, and Q to quit.\n";while (cin >> c && (c = toupper(c)) != 'Q'){while (cin.get() != '\n')continue;if (c != 'A' && c != 'P'){cout << "Please respond with A, P, or Q: ";continue;}switch (c){case 'A'    :    if (st.isfull()) cout << "stack already full\n"; else { get_customer(temp); st.push(temp); } break;case 'P'    :    if (st.isempty()) cout << "stack already empty\n"; else { st.pop(temp); payments += temp.payment; cout << temp.fullname << " processed. "; cout << "Payments now total $" << payments << "\n"; } break;default    :    cout << "Whoops! Programming error!\n";}cout << "Please enter A to add a customer,\n"<< "P to process a customer, and Q to quit.\n";}cout << "Done!\n";system("pause");return 0;}void get_customer(customer & cu){using namespace std;cout << "Enter customer name: ";cin.getline(cu.fullname,35);cout << "Enter customer payment: ";cin >> cu.payment;while (cin.get() != '\n')continue;}

/*******************************************************************************************************************  Author : Cui mingyang Blog : cx_12586 Time : 2017/11/17 From : C++ Primer Plus第五版第10章编程练习 第6题   *******************************************************************************************************************///头文件#ifndef MOVE_H_#define MOVE_H_class Move{private:double x;double y;public:Move (double a =0, double b=0);void showmove()const;Move add(const Move & m)const;void reset(double a =0, double b=0);};#endif//头文件对应的cpp文件#include <iostream>#include "Move.h"Move::Move (double a, double b){x = a;y = b;}void Move::showmove()const{std::cout << "x: " << x << " ,y: " << y << std::endl;}Move Move::add(const Move & m)const{  return Move(x + m.x, y + m.y);  }void Move::reset(double a, double b){x = a;y = b;}//演示主程序#include <iostream>  #include "move.h"  int main()  {  Move a;  a.showmove();  Move b(3,3);  b.showmove();  a = a.add(b);  a.showmove();  a.reset(1,1);  a.showmove();  system("pause");return 0;  }

/*******************************************************************************************************************  Author : Cui mingyang Blog : cx_12586 Time : 2017/11/17 From : C++ Primer Plus第五版第10章编程练习 第7题   *******************************************************************************************************************///头文件#ifndef PLORG_H_#define PLORG_H_class Plorg{private:enum {MAX = 20};  char name[MAX];  int CI;public:Plorg(char *p= "Plorga", int n =50);void change(const int n);void show()const;};#endif//头文件对应的cpp文件#include <iostream>#include<cstring>#include "Plorg.h"Plorg::Plorg(char *p, int n){strncpy(name,p,MAX-1);name[MAX-1]='\0';CI = n;}void Plorg::change(const int n){CI = n;}void Plorg::show()const{std::cout << "Name: " << name <<", CI: " << CI <<std::endl;}//演示主程序#include <iostream>  #include "Plorg.h"  int main()  {  Plorg one;  Plorg two("David",66);  one.show();  one.change(666);  one.show();  two.show();  two.change(888);  two.show();  system("pause");return 0;  }  

/*******************************************************************************************************************  Author : Cui mingyang Blog : cx_12586 Time : 2017/11/17 From : C++ Primer Plus第五版第10章编程练习 第8题   *******************************************************************************************************************///头文件#ifndef SIMPLEST_#define SIMPLEST_// program-specific declarationsconst int TSIZE = 45;      // size of array to hold titlestruct film{char title[TSIZE];int rating;};// general type definitionstypedef struct film Item;const int MAXLIST = 10;class simplist{private:Item items[MAXLIST];int count;public:simplist(void);bool isempty(void);bool isfull(void);int itemcount();bool additem(Item item);void transverse( void (*pfun)(Item item));};#endif//头文件对应的cpp文件#include "simplist.h"simplist::simplist(void){count = 0;}bool simplist::isempty(void){return count == 0;}bool simplist::isfull(void){return count == MAXLIST;}int simplist::itemcount(){return count;}bool simplist::additem(Item item){if (count == MAXLIST)return false;elseitems[count++] = item;return true;}void simplist::transverse( void (*pfun)(Item item)){for (int i = 0; i < count; i++)(*pfun)(items[i]);}//演示主程序#include <iostream>#include <cstdlib>         // prototype for exit()#include "simplist.h"     // simple list class declaration// array versionvoid showmovies(Item item); // to be used by transverse()int main(void){using namespace std;simplist movies;     // creates an empty listItem temp;if (movies.isfull())    // invokes isfull() member function{cout << "No more room in list! Bye!\n";exit(1);}cout << "Enter first movie title:\n";while (cin.getline(temp.title,TSIZE) && temp.title[0] != '\0'){cout << "Enter your rating <0-10>: ";cin >> temp.rating;while(cin.get() != '\n')continue;if (movies.additem(temp) == false){cout << "List already is full!\n";break;}if (movies.isfull()){cout << "You have filled the list.\n";break;}cout << "Enter next movie title (empty line to stop):\n";}if (movies.isempty())cout << "No data entered. ";else{cout << "Here is the movie list:\n";movies.transverse(showmovies);}cout << "Bye!\n";return 0;}void showmovies(Item item){std::cout << "Movie: " << item.title << "  Rating: "<< item.rating << std::endl;}


阅读全文
0 0
原创粉丝点击