c++ primer plus 第九章习题

golf.hpp

//golf.hpp
const int len=40;
struct golf
{
    char fullname[len];
    int handicap;
};
void setgolf(golf & g, const char * name, int hc);
int setgolf(golf & g);
void handicap(golf & g, int hc);
void showgolf(const golf & g);

golf.cpp

//golf.cpp
#include "golf.hpp"
#include <iostream>
using namespace std;
void setgolf(golf & g, const char * name, int hc)
{
    strcpy(g.fullname, name);
    g.handicap=hc;
}
int setgolf(golf & g)
{
    char name[len];
    cout<<"Please enter your name: ";
    cin.getline(name,len);
    if(strcmp(name,"")==0)
        return 0;
    else
    {
        strcpy(g.fullname,name);
        cout<<"Please enter the handicap: ";
        cin>>g.handicap;
        cin.get();
        return 1;
    }

golf.main.cpp

//golf.main.cpp
#include "golf.hpp"
#include <iostream>
using namespace std;
const int N=3;
int main()
{
    golf g1[N];
    int count=0;
    for(int i=0;i<N;i++)
    {
        if(!setgolf(g1[i]))
            break;
        else
            count++;
    }
    for(int i=0;i<count;i++)
    {
        showgolf(g1[i]);
    }
    handicap(g1[0], 5);
    for(int i=0;i<count;i++)
    {
        showgolf(g1[i]);
    }
    
}
// static.cpp -- using a static local variable
#include <iostream>
// constants
using namespace std;
// function prototype
void strcount(const string str);

int main()
{

    string input;
    
    cout << "Enter a line:\n";
    getline(cin, input);
    while (cin)
    {
        strcount(input);
        if (input=="")
            break;      // dispose of remainder
        cout << "Enter next line (empty line to quit):\n";
        getline(cin, input);
    }
    cout << "Bye\n";
    return 0;
}

void strcount(const string str)
{
    static int total = 0;
    int count = 0;
    
    cout << "\"" << str <<"\" contains ";
    while(str[count])
        count++;
    total += count;
    cout << count << " characters\n";
    cout << total << " characters total\n";
}

#include <iostream>
using namespace std;
const int N=2;
const int len=20;
struct chaff
{
    char dross[len];
    int slag;
};
chaff buffer[N];
int main()
{
    char temp_dross[len];
    chaff *p1=new (buffer)chaff[N];
    for(int i=0;i<N;i++)
    {
        cout<<"Enter the dross: ";
        cin.getline(temp_dross,len);
        strcpy(p1[i].dross,temp_dross);
        cout<<"Enter the slag: ";
        cin>>p1[i].slag;
        cin.get();
    }
    for(int i=0;i<N;i++)
    {
        cout<<"#"<<i+1<<": "
        <<p1[i].dross<<", "<<p1[i].slag<<endl;
    }
    delete [] p1;
}

sales.hpp

//sales.hpp
namespace Sales
{
    const int quarters=4;
    struct sales
    {
        double sales[quarters];
        double average;
        double max;
        double min;
    };
    void setsales(sales & s, const double ar[], int n);
    void setsales(sales & s);
    void showsales(const sales & s);
}

saless.cpp

#include "sales.hpp"
#include <iostream>
namespace Sales
{
    void setsales(sales & s, const double ar[], int n)
    {
        int size=quarters<n?quarters:n;
        s.average=0;
        s.max=ar[0];
        s.min=ar[0];
        for(int i=0;i<size;i++)
        {
            s.sales[i]=ar[i];
            if(ar[i]>s.max) s.max=ar[i];
            if(ar[i]<s.min) s.min=ar[i];
            s.average+=ar[i];
        }
        if(quarters>n)
        {
            for(int i=n;i<quarters;i++)
                s.sales[i]=0;
        }
        else
        {
            for(int i=quarters;i<n;i++)
                s.sales[i]=0;
        }
        
        s.average/=size;
    }
    
    void setsales(sales & s)
    {
        using namespace std;
        double average=0;
        double max=s.sales[0];
        double min=s.sales[0];
        cout<<"Please enter the value of sales: ";
        for(int i=0;i<quarters;i++)
        {
            cin>>s.sales[i];
            if(s.sales[i]>max) max=s.sales[i];
            if(s.sales[i]<min) min=s.sales[i];
            average+=s.sales[i];
        }
        s.average/=average/4;
        s.max=max;
        s.min=min;
    }
    
    void showsales(const sales & s)
    {
        using namespace std;
        
        for(int i=0;i<quarters;i++)
            cout<<"#"<<i+1<<": "<<s.sales[i]
            <<endl;
        cout<<"The maximum sales is "<<s.max<<endl;
        cout<<"The minimum sales is "<<s.min<<endl;
        cout<<"The average sales is "<<s.average<<endl;
    }
}

salesm.cpp

#include <iostream>
#include "sales.hpp"
using namespace std;
int main()
{
    using namespace Sales;
    sales ss[2];
    setsales(ss[0]);
    showsales(ss[0]);
    double arr[4]={433.3,34.25};
    setsales(ss[1], arr, 2);
    showsales(ss[1]);
}

根据结果来看此题答案有误,先放在这里,以后来改。

猜你喜欢

转载自blog.csdn.net/weixin_42365868/article/details/86706228