3.10 编程(www.cppentry.com)习题(4)
对于表3-4所示的输入集,不可能产生五个或更多的无冲突的Schedule。
Schedule类的公有接口应该包括创建、销毁、修改和合并任务安排表的成员函数。
提示 对输入集中的任务进行迭代处理,在每次迭代过程中,选取结束时间最小的任务,该任务与Schedule中当前所有任务没有冲突。
3-19 设计一个SymbolTable类。符号表(symbol table)列出了程序源代码中所有标识符(如函数和变量名义)及其相关信息(如标识符的数据类型)、标识符在程序中的角色(如该标识符是一个函数名还是变量名,或是一个标签)、标识符在源代码文件中的位置(如该标识符出现在源代码文件中的第几行)。公有接口允许用户根据一个或多个源文件来创建SymbolTable,并允许用户显示和编辑SymbolTable。
3-20 设计一个表示规则表达式(regular expressions)的类RegExp,用于模式匹配。规则表达式是一个包含普通和特定字符的字符串。比如说,规则表达式
只能匹配按这种规则排列这四个字符的其他字符串。规则表达式可以包含一些有特殊意义的字符(如表3-6所示)。
表3-6 包含特殊字符的规则表达式
该类的接口包含如下成员函数:创建RegExp、删除RegExp、匹配RegExp。
3-21 设计一个Date类用来表示日期,如Wednesday, March 21,2001。要求该类有构造函数,用来设置Date为当前日期或用户指定日期。为Date类实现如下功能:向前移动n天(n为1,2 …);向后移动n天(n为1,2 …);打印全部日期或部分日期(如只打印月份);打印某一天到另外一天之间的所有日期(如从Wednesday,March 21,2001到Monday,October 1,2001)。
3-22 设计一个Emp类。这个类用社会保险号这样的标识符来惟一标识每一位雇员。该类拥有一些数据成员来表示每一位雇员的属性和特征,如姓、名、婚姻状况、家庭追、电话号码、月薪、部门、办公室电话、职务以及当前工作等。该类的接口包括访问和修改这些属性的成员函数。
3-23 设计一个Product类,允许通过如下方式来创建产品对象:
通过指定产品名创建。
通过指定产品名和产品价格创建。
通过指定产品名、产品价格、出厂日期创建。
Product类还应该包含如下属性:生产厂家、产品简介、可食用标志、易碎标志、有效日期。设计该类时,请为它增加至少三个其他属性。该类的接口包括访问所有这些属性的成员函数。
3-24 设计一个适用于int型数据的Pair类,Pair类的声明如下:
类接口包含如下成员函数:
创建Pair的函数。
设置和读取Pair中的每一个元素的函数。
交换Pair中元素的函数。交换后第一个元素变成了第二个,而二个元素变成了第一个。