返回介绍

11.9 编程练习

发布于 2024-10-08 23:14:09 字数 2032 浏览 0 评论 0 收藏 0

1.修改程序清单 11.5,使之将一系列连续的随机漫步者位置写入到文件中。对于每个位置,用步号进行标示。另外,让该程序将初始条件(目标距离和步长)以及结果小结写入到该文件中。该文件的内容与下面类似:

2.对 Vector 类的头文件(程序清单 11.13)和实现文件(程序清单 11.14)进行修改,使其不再存储矢量的长度和角度,而是在 magval( ) 和 angval( ) 被调用时计算它们。

应保留公有接口不变(公有方法及其参数不变),但对私有部分(包括一些私有方法)和方法实现进行修改。然后,使用程序清单 11.15 对修改后的版本进行测试,结果应该与以前相同,因为 Vector 类的公有接口与原来相同。

3.修改程序清单 11.15,使之报告 N 次测试中的最高、最低和平均步数(其中 N 是用户输入的整数),而不是报告每次测试的结果。

4.重新编写最后的 Time 类示例(程序清单 11.10、程序清单 11.11 和程序清单 11.12),使用友元函数来实现所有的重载运算符。

5.重新编写 Stonewt 类(程序清单 11.16 和程序清单 11.17),使它有一个状态成员,由该成员控制对象应转换为英石格式、整数磅格式还是浮点磅格式。重载<<运算符,使用它来替换 show_stn( ) 和 show_lbs( ) 方法。重载加法、减法和乘法运算符,以便可以对 Stonewt 值进行加、减、乘运算。编写一个使用所有类方法和友元的小程序,来测试这个类。

6.重新编写 Stonewt 类(程序清单 11.16 和程序清单 11.17),重载全部 6 个关系运算符。运算符对 pounds 成员进行比较,并返回一个 bool 值。编写一个程序,它声明一个包含 6 个 Stonewt 对象的数组,并在数组声明中初始化前 3 个对象。然后使用循环来读取用于设置剩余 3 个数组元素的值。接着报告最小的元素、最大的元素以及大于或等于 11 英石的元素的数量(最简单的方法是创建一个 Stonewt 对象,并将其初始化为 11 英石,然后将其同其他对象进行比较)。

7.复数有两个部分组成:实数部分和虚数部分。复数的一种书写方式是:(3.0,4.0),其中,3.0 是实数部分,4.0 是虚数部分。假设 a = (A, Bi),c = (C, Di),则下面是一些复数运算。

  • 加法:a + c = (A+C, (B+D)i)。
  • 减法:a – c = (A−C, (B−D)i)。
  • 乘法:a * c = (A*C−B*D, (A*D + B*C)i)。
  • 乘法::x*c = (x * C, x *Di),其中 x 为实数。
  • 共轭:~a = (A, −Bi)。

请定义一个复数类,以便下面的程序可以使用它来获得正确的结果。

注意,必须重载运算符<<和>>。标准 C++使用头文件 complex 提供了比这个示例更广泛的复数支持,因此应将自定义的头文件命名为 complex0.h,以免发生冲突。应尽可能使用 const。

下面是该程序的运行情况。

请注意,经过重载后,cin >>c 将提示用户输入实数和虚数部分。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文