c++ primer plus 第八章《编程题8.7.8》

/*
Macbook Air13.
10.5  420.432  297.123  1.31166e+06
C++ Primer Plus.
12.1  298  8.8  31731
#2:
Macbook Air13.
10.5  420.432  297.123  1.31166e+06
*/
#include <iostream>

using namespace std;

struct box {
    char maker[40];
    float height;
    float width;
    float length;
    float volume;
};

template <typename BOX>
const BOX & Compare(BOX &a, BOX &b);
template <> const box & Compare(box &a, box &b);
void vol(box &a);
void show(const box &max);

int main() {
    box notebook = {"Macbook Air13.", 10.5, 420.432, 297.123};
    box book = {"C++ Primer Plus.", 12.1, 298, 8.8};
    vol(notebook);
    vol(book);
    show(notebook);
    show(book);
    const box & max = Compare(notebook, book);
    show(max);
}

void vol(box &a) {
    a.volume = a.height * a.width * a.length;
}

template <typename BOX>
const BOX & Compare(BOX &a, BOX &b) {
    cout << "#1:\n";
    if (a.volume > b.volume)
        return a;
    else
        return b;
}

template <> const box & Compare(box &a, box &b) {
    cout << "#2:\n";
    if (a.volume > b.volume)
        return a;
    else
        return b;
}

void show(const box &max) {
    cout << max.maker << '\n';
    cout << max.height << "  " << max.width << "  " << max.length << "  " << max.volume << "\n";
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值