考试题目
CPU是计算机的中央处理单元,是计算机的重要组成部分。计算机有很多具体的结构形式,其中有一种有多种防护等级的计算机被称为工业控制计算机(Industrial Personal Computer,IPC),该特殊形式的计算机经常被用于工业生产现场。
请根据要求完成如下编程工作:
1、 现有一个CPU类定义如下:
class CPU
{
private:
double m_MainFreq; //主频,单位GHz
int m_CoreNum; //核心数
double m_Power; //功率,单位:W
public:
CPU(double MainFreq, int CoreNum, double Power);
double GetMainFreq(void)const; //获取主频
CPU& operator++(); //前自增,主频加0.1,核心数加2,功率加1.0
CPU operator++(int); //后自增,规则同上
friend ostream& operator<<(ostream& Out, const CPU& Obj); //输出CPU的参数,
//主频占6列,小数部分保留2位,左对齐
//核心数占3列,左对齐
//功率占6列,小数部分保留1位,左对齐
};
请根据要求完成如下函数定义:
(1) 请完善CPU类的构造函数定义,构造函数参数从左向右的含义:主频、核心数、功率
(2) 请完善CPU类的GetMainFreq ()成员函数的定义。
(3) 请完善CPU类的前++和后++运算符重载成员函数的定义。
(4) 请为CPU类提供输出运算符重载函数,输出格式如上所示
2、 计算机(Computer)基类定义如下:
class Computer
{
private:
CPU m_CPU;
int m_Memory; //内存容量,单位:G
int m_HD; //硬盘容量,单位:G
public:
Computer(double CPU_MainFreq, int CPU_CoreNum, double CPU_Power, int Memory, int HD);
CPU GetCPU(void)const; //获取CPU数据
double GetMemory(void)const; //获取内存容量
Computer& operator++(); //前自增,CPU部分自增规则同CPU类,内存扩大4G,硬盘扩大128G
Computer operator++(int); //后自增,规则同上
friend ostream& operator<<(ostream& Out, const Computer& Obj);
//CPU部分数据的输出规则与CPU类中定义相同
//内存容量占6列,左对齐
//硬盘容量占8列,左对齐
};
请根据要求完善如下函数定义:
(1) 请完善Computer类的构造函数定义,其中函数参数从左向右的含义:CPU主频、CPU核心数、CPU功率、内存大小、硬盘大小
(2) 请完善Computer类的GetCPU()成员函数的定义。
(3) 请完善Computer类的GetMemory()成员函数的定义。
(4) 请完善Computer类的前++和后++运算符重载成员函数的定义。
(5) 请为Computer类提供输出运算符重载函数,输出格式如上所示。
3、 请设计一个用于表示工控机的IPC类。
class IPC:public Computer
{
private:
int m_ProtectGrade; //防护等级
static int m_Counts; //工控机数量
public:
IPC(double CPU_MainFreq=3.7, int CPU_CoreNum=6, double CPU_Power=95.0, int Memory=16, int HD=512, int ProtectGrade=65);
IPC(const IPC& Obj);
double GetProtectGrade(void)const; //获取防护等级
static int GetCounts(void); //获取当前工控机数量
IPC& operator++(); //前自增,Computer数据自增规则同上,防护等级加1
IPC operator++(int); //后自增,规则同上
friend ostream& operator<<(ostream& Out, const IPC& Obj);
//Computer部分数据的输出规则与Computer类中定义相同
//防护等级占5列,左对齐
~IPC();
};
请根据要求完善如下函数定义:
(1) 请完善IPC类的有参构造函数定义,其中函数参数从左向右的含义:CPU主频、CPU核心数、CPU功率、内存大小、硬盘大小、防护等级
(2) 请完善IPC类的复制构造函数定义
(3) 请完善IPC类的GetProtectGrade ()成员函数的定义。
(4) 请完善IPC类的GetCounts ()成员函数的定义。
(5) 请完善IPC类的前++和后++运算符重载成员函数的定义。
(6) 请为IPC类提供输出运算符重载函数,输出格式如上所示。
4、 在上述3个类设计的基础上,请按照下列要求分别编写4个函数:
(1) 编写一个函数ReadIPCFile,从D盘根目录下的文本文件source.txt中读取数量未知个工控机数据,构成一个IPC类型的向量A。该文本文件中每条工控机信息中顺序包含了CPU主频、CPU核心数、CPU功率、内存容量、硬盘容量、防护等级,每条数据占1行。
(2) 编写一个函数SortIPC,对上述A向量进行增序排序,排序条件定义如下:
a) CPU主频
b) 防护等级
注意:上述排序条件是有顺序的,必须按照“