3.10 编程(www.cppentry.com)习题(2)
3-10 在计算机系统中,semaphore广泛用于共享资源的同步访问操作。例如,一个信号量可以保证两个进程不会在同一时间使用同一台打印机。信号量首先允许一个进程访问打印机,然后逐一地将打印机交给其他进程使用,这样打印机就不会同时从两个或两个以上的进程收到混淆的信息。设计一个Semaphore类对文件资源进行同步,以保证某个文件在任何时刻只能被一个进程访问,其公有接口由下面的成员函数组成:为一个特定文件设置一个信号量,释放一个作用于某个文件的信号量,测试某信号量当前是否作用于某个文件。
3-11 设计一个交互的Calculator类,它可以识别算术表达式并计算其结果,如下算术表达式:
Calculator类可正确地计算出结果为
并将该数值打印出来。例如,如果用户的输入为:
则会输出如下的错误消息:
3-12 设计一个集合(Set)类。Set可以包含零个或多个无序的非重复元素。本练习中的元素都是int型。公有接口包括如下成员函数:
创建一个Set。
增加一个新元素到Set。
从Set中删除一个元素。
列举Set中的所有元素。
S1和S2都是Set对象,计算它们的交集。
S1和S2都是Set对象,计算它们的并集。
S1和S2都是Set对象,计算它们的差集。
3-13 设计一个bag类。bag与集合类似,不过bag可以拥有相同的元素。本练习中,bag的元素都为int型。除了练习3-12中的要求外,公有接口还要支持对应操作。
3-14 创建一个适合做模拟实验的Spaceship类。设计一个构造函数,允许用户指明Spaceship在三维空间中的初始位置、轨道、速度、加速度和目的地。模拟实验要跟踪Spaceship在任何时刻的运动情况,并将相关数据打印出来,这些数据包括Spaceship的标识、轨道及其他相关数据。如果你手头有一个图形开发软件包,可用图形方式实现上述功能。
3-15 设计一个Database类。Database是一种表的集合,而表又由行和列组成。例如,表3-3中的雇员表包含三个记录,每个记录有四个字段(Employee ID、Last Name、Department和Boss)。
表3-3 employee表