复数类的设计问题

问题描述:设计一个复数类,要求

(1)在复数内部用双精度浮点数定义其实部和虚部

(2)实现3个构造函数;第1个构造函数没有参数;

第2个构造函数将双精度浮点数赋给复数的实部,虚部为0;

第3个构造函数将两个双精度浮点数分别赋给复数的实部和虚部。

(3)编写获取和修改复数的实部和虚部的成员函数

(4)编写实现复数的减法、乘法运算的成员函数

涉及教材:《数据结构——Java语言描述(第2版)》 清华大学出版社

涉及变量:plurality_0112 : 我自定义的复数类

real:double型,复数的实部

image:double型,复数的虚部

问题出自教材第一章课后习题 P28

思路:

1.了解复数,复数分为实部和虚部两部分,数学表现形式为 a+bi,i为虚数单位,在类中可不表现

(1)定义两个private的double型数real和image

一般用private来定义内部私有的成员变量,若要调用该变量必须通过即将定义的get方法,以表规范

(2)构造方法为用public修饰的,没有返回值修饰符的特殊方法,用于类的初始化

可在一个构造方法中this()调用另一个构造方法

成员变量的定义和构造方法代码如下:

(3)一般而言,设置获取某个类中私有成员变量的方法命名是get成员变量名,返回值为该成员变量类型

修改成员变量的方法命名为set成员变量名,返回值修饰符为void

(4)题目中只要求减法和乘法,我顺便把加法和除法也做了

加减法没有太大问题,就是将外来复数的实数值与虚数值分别与本复数的实部值和虚部值相加或相减,并将所得值赋予本复数

乘法和除法有公式可以得到实部值和虚部值,编写算法时注意不要将原有的值与更改后的值弄混

进行计算时是使用原有的值,但若用加减法那种直接用this调用成员变量的方法会误使用更改后的值

在进行赋值前要先将需要的值存放在局部变量中

以上两个算法中其实都只需要将this.real赋值于real即可,div()中是为了方便截图才用了三个局部变量

这是属于比较简单的类的定义,以后会经常用到,乘除方法公式网上也有,只要公式不要写混就没有太大难度

答案在乘法的大致思路是先将所计算出的实部值存放在变量中,最后再将变量赋值于this.real,在计算中可以正常使用this方法来调用成员变量

以上希望对各位有所帮助

190112 Rewivy

原文地址:https://www.cnblogs.com/rewivy/p/10260611.html

时间: 2024-10-02 09:55:33

复数类的设计问题的相关文章

复数类中的运算符重载

输入代码: /* * Copyright (c) 2015, 烟台大学计算机学院 * All rights reserved. * 文件名称:sum123.cpp * 作 者:林海云 * 完成日期:2015年4月28日 * 版 本 号:v2.0 * * 问题描述: 请用类的成员函数,定义复数类重载运算符+.-.*./,使之能用于复数的加减乘除 * 输入描述:无 * 程序输出:输出按要求设计的复数结果 */ #include<iostream> using namespace std; clas

侯捷《C++面向对象开发》——动手实现自己的复数类

前言 最近在看侯捷的一套课程<C++面向对象开发>,刚看完第一节introduction之后就被疯狂圈粉.感觉侯捷所提及所重视的部分也正是我一知半解的知识盲区,我之前也写过一些C++面向对象的程序,不过正如侯捷所说,我还仅仅停留于Object-based层面,写程序时总是在想如何封装好一个类,而不是Object-oriented强调类与类之间关系的设计. 这门课程分为两部分,第一部分讲Object-based,第二部分讲Object-oriented:第一部分又分为两部分:带指针的类的封装和不

第11周项目1——点、圆、圆柱类的设计

<pre class="html" name="code"> /* *Copyright (c) 2016,烟台大学计算机学院 *All rights reserved. *文件名称 : *作 者 : 刘云 *完成日期 : 2016年5月8号 *版 本 号 : v6.0 * *问题描述 : 点.圆.圆柱类的设计 *输入描述 : 无 *程序输出 : */ /**************************************************

【C++】 复数类操作

复数的概念我们高中已经接触过,包含是实部和虚部, For example:2i + 3J:实部和虚部值可为整型,亦可浮点型,那在此实现一下简单的复数类的操作 代码如下: class Complex { public:     Complex(double real,double imag)     {         _real = real;         _imag = imag;     }     Complex(const Complex& c)     {         _rea

类的设计

1001: 类的设计(1) Time Limit: 1 Sec  Memory Limit: 65535 MB   64bit IO Format: %lldSubmitted: 9  Accepted: 7[Submit][Status][Web Board] Description 设计clock类,成员数据包含时(hour)分(minute)秒(second),都是int类型,根据给定的main函数设计必要的成员函数. main函数已给定,提交时只需要提交main函数外的代码部分. int

表达式计算器类的设计5(面向对象的表达式计算器8)

计算器的github下载地址:https://github.com/ljian1992/calculator 概述 表达式计算器的类基本已经设计完成了,由于在程序运行的时候总会有这样那样的异常,例如:a +2, a没有初始化,对于异常的管理一般而言是需要自定义异常类.这个自定义异常类也是在继承了系统已经定义好的exception类,然后再重新定义内容. 异常的种类 语法异常---->SyntaxError类 赋值时左操作数不是变量:1 = 2; 缺少括号:1 + (2*2 不认识的函数: 函数缺

表达式计算器类的设计4(面向对象的表达式计算器7)

概述 把符号表和变量表中的内容保存到一个文件中,通过IO文件流,来把符号表和变量表存储到文件中.在这之前需要弄明白什么是序列化和反序列化 对象的序列化 序列化:把对象转换为字节序列的过程 反序列化:把字节序列恢复为对象的过程 我们要把SymbolTable类的对象(符号表)和Storage类的对象(变量表)转换成字节序列保存到文件中,这时就可以设置Serializer类来完成这样的功能,同样的设置一个DeSerializer类来完成把保存到文件当中的字节序列恢复为对象的功能.这里要注意的是,所有

表达式计算器类的设计3(面向对象的表达式计算器6)

概述 有了构建语法的类,存储符号的类,现在就可以对表达式进行扫描,解析了.扫描可以抽象出一个Scanner类来完成这一个功能,而解析可以抽象出一个Parser类来完成这一个功能.这两个类存在一定的关系,扫描与解析的互动是这样子的:扫描到一个标识符,然后解析它是什么标识符.由于该表达式计算器是要支持一些命令的,命令的解析和表达式的解析过程完全不一样,所有呢,又要设置一个CommandParser类,来解析命令. Scanner类,Parser类,CommandParser类的设计 Scanner类

17.并发类容器设计

并发类容器设计 1.ConcurrentHashMap:代替散列普通的hashTable,添加了复合操作支持. private ConcurrentHashMap<String, Object> resultMap = new ConcurrentHashMap<String, Object>(); for (Map.Entry<String, Object> m : resultMap.entrySet()) { count += (Long) m.getValue(