题解:最大硬盘
题目分析
题目要求我们从多个硬盘的列表中,找到存储容量最大的硬盘,并输出其信息。每个硬盘的存储单位可能是 GB、MB、KB 或 B,这些单位的换算规则是基于十进制的(与硬盘制造商的习惯一致)。
硬盘大小不一致,且单位不同,直接比较数值是不可行的,因此我们需要将所有硬盘的大小统一换算为一个标准单位——字节数,然后进行比较。
解题思路
更希望大家能用到一些语言上的特性,对于不同单位进行比较大小特别适合用重载运算符做。
1. 数据结构设计:
* 我们定义一个 Disk 结构体,包含硬盘的三个属性:
* size: 表示硬盘的数值部分。
* unit: 表示硬盘的存储单位(如 GB, MB, KB, B)。
* Bytes: 表示该硬盘的存储容量统一换算为字节数。
2. 单位转换:
* 1 GB = 1000000000 B
* 1 MB = 1000000 B
* 1 KB = 1000 B
* 1 B = 1 B
我们需要定义一个函数 convertToBytes(),将不同单位的存储容量转换成字节数。
3. 重载运算符:
* 为了方便比较硬盘的大小,我们对 Disk 结构体重载了 < 运算符。这样可以在后续使用 max_element 函数时,直接根据 Bytes 字段进行比较,找到最大的硬盘。
4. 遍历输入:
* 首先读取硬盘的数量 nnn,然后依次读取每个硬盘的大小和单位,计算并存储它的字节数。
5. 寻找最大值:
* 使用 std::max_element 函数找到字节数最大的硬盘,并输出该硬盘的原始大小和单位。
AC代码