C++定义复数类(Complex)

这篇具有很好参考价值的文章主要介绍了C++定义复数类(Complex)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目描述:

定义一个复数类Complex,使得下面的代码能够工作:
Complex c1(3, 5);        //用复数3+5i初始化c1
Complex c2 = 4.5;        //用实参4.5作为实部初始化c2,虚部为0
c1.add(c2);              //将c1与c2相加,结果保存在c1中
c1.show();               //将c1输出(这时结果应该是7.5+5i)

输入格式:

每组输入2行,第一行是空格隔开的实部、虚部,用于初始化第一个复数。第二行是一个实数,用于初始化第二个复数。

输出格式:

使用成员函数show()输出第一个复数和第二个复数相加的结果

输入样例

3 5
4.5
3.6 0
4
0 5.6
-9.7
12 -9.5
-15
3.4 5
-3.4
0 0
0

输出样例 :

7.5+5i
7.6
-9.7+5.6i
-3-9.5i
5i
0

分析思路:

初始化的过程便是要我们自己来定义两个构造函数(构造函数可以用来初始化参数),接着add函数中有点巧妙的是用c1中来调用类内的add函数其中add内的输入参数是Complex中的一个构造函数(这里的c2).紧接着对c1进行一个成员函数(show)调用即可。

另外需要注意的是,在show函数中,需要留意实数,虚数的不同情况的讨论,以及“+”或者“-”符号表示。

代码展示:

#include<iostream>
using namespace std;
class Complex {
private:
    double shi, xu;
public:
    Complex(double a, double b);//有两个初始化值的构造函数
    Complex(double c);//只初始化一个值的构造函数
    void add(Complex J);//add函数定义
    void show();//函数的结果输出
};
//两个初始化值的构造函数,实部和虚部
Complex::Complex(double a, double b) {
    shi = a;
    xu = b;
}
//只初始化实部
Complex::Complex(double c) {
    shi = c;
}
void Complex::add(Complex J) {
    shi = shi + J.shi;
    xu = xu;
}
void Complex::show() {
    if (shi == 0 && xu == 0) {
        cout << 0 << endl;
    }
    else if (shi == 0) {
            cout << xu << "i" << endl;
    }
    else if (xu == 0) {
        cout << shi << endl;
    }
    else {
        if (xu > 0) {
            cout << shi << "+" << xu << "i" << endl;
        }
        else if (xu < 0) {
            cout << shi << xu << "i" << endl;
        }
    }
}
int main() {
    double x, y, z;
    while (cin >> x >> y >> z) {
        Complex c1(x, y);//这里是调用两个初始化值的构造函数语法
        Complex c2(z);//这里是调用一个初始化值的构造函数语法
        c1.add(c2);//这里是利用c1类来调用参数是c2的add成员函数,c1提供一个shi加上c2的一个shi合成一个新的shi
        c1.show();//结果输出
    }
}

运行结果展示:

C++定义复数类(Complex)

小小感悟:

 其实类就是一个封装起来的一个类型,其中有一些语法需要我们注意。main函数里面定义Complex c1这个c1就是类的一个名字,在c1中我们仍可以利用它来作为参数基础调用类内成员函数。其实类是一个非常好用的小知识点,用了类我们可以通过函数名来表示用途,用的人也不用在意函数具体怎么实现,直接用就可以了,而且主函数可以非常简洁。文章来源地址https://www.toymoban.com/news/detail-409474.html

到了这里,关于C++定义复数类(Complex)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Visual Studio C++找到一个或多个多重定义的符号解决方法

    1、当Visual Studio C++中一个项目下有两个及以上的源文件时,编译会产生错误 : LNK200:_main已经在if_else的学习.obj中定义 LNK116:找到一个或多个多重定义的符号 原因是: 一个项目下有两个及以上的源文件,如下图所示的if else的学习.cpp文件和learn1.cpp文件,里面都存在相同的函数

    2024年02月04日
    浏览(83)
  • 在protobuf里定义描述rpc方法的类型

    service  UserServiceRpc     //在test.proto中定义 {     rpc Login(LoginRequest)returns(LoginResponse);     rpc GetFriendLists(GetFriendListRequest)returns(GetFriendListResponse); }   test.proto文件生成test.pb.cc      protoc  test.proto  --cpp_out=./    将生成的文件放到 ./ 目录下,截取一部分如下 调用关系如图所示

    2024年04月25日
    浏览(50)
  • Vue Element UI 自定义描述列表组件

    效果图  写在前面 由于vue使用的版本太低,vue element UI 的描述列表不生效,但是有时候又不想换版本的可以自定义一个描述列表。 实现哪些功能 1、每行的高度根据改行中某一列的最大高度自动撑开 2、 列宽度自动补全,避免最后一列出现残缺的情况 3、支持纯文本与HTML插槽

    2024年02月03日
    浏览(62)
  • Spring MVC-基础概念(定义+创建和连接+@RequestMappring的描述)

    目录 1.什么是Spring MVC? 2. MVC 和 Spring MVC 的关系 3.Spring MVC 项目创建 4. @RequestMappring实现用户和程序的映射 4.1 @RequestMappring 注解解释 4.2 方法1: @RequestMapping(“/xxx”) 4.4 @RequestMapping(method = xxxx, value = “xxx”) 是POST/GET请求 4.5 方法2:@PostMapping(“/xxx”) 4.6 方法3:@GetMapping(“/xxx”

    2024年02月16日
    浏览(49)
  • 【C++练习】普通方法+利用this 设置一个矩形类(Rectangle), 包含私有成员长(length)、 宽(width), 定义一下成员函数

    设置一个矩形类(Rectangle), 包含私有成员长(length)、 宽(width), 定义成员函数:         void set_ len(int l);  //设置长度         设置宽度void set_ wid(int w);          获取长度: int get len();          获取宽度: int get _wid);          显示周长和面积: void show();   

    2024年02月11日
    浏览(42)
  • Bard:一个可以描述图像的人工智能

    Bard 是一个大型语言模型,可以对各种提示和问题进行交流和生成类似人类的文本。它接受了大量的文字和代码训练,可以生成文本、翻译语言、编写不同类型的创意内容,并以信息丰富的方式回答你的问题。 Bard 还可以识别图像。它可以识别图像中的对象、场景和人物。它

    2024年02月17日
    浏览(45)
  • 构建第一个ArkTS之声明式UI描述

    ArkTS以声明方式组合和扩展组件来描述应用程序的UI,同时还提供了基本的属性、事件和子组件配置方法,帮助开发者实现应用交互逻辑。 根据组件构造方法的不同,创建组件包含有参数和无参数两种方式。 说明 创建组件时不需要new运算符。 无参数 如果组件的接口定义没有

    2024年04月13日
    浏览(31)
  • GreatSQL一个关于主从复制的限制描述与规避

    分享一个在项目运维中遇到的一个主从复制限制的一个坑,项目的架构为主集群+灾备集群,每个集群为一主两从模式。主集群到灾备集群的同步为主从复制的方式,根据业务需求灾备集群需要忽略系统库跟某些配置表,所以才会触发此限制,而这个限制如果我们之前没有遇到

    2024年02月08日
    浏览(37)
  • 自己搭一个离线的文本描述生成图片系统

    二话不说先上效果图:(附带代码和模型资源文件)  让它画一个超级汽车在海边。。  近期百度推出了文言一心, 一个能回答问题,能根据文字描述绘制图片的服务,前期可能不太完善出现了一些失误,不过这个idea还是相当不错的   这个东西挺好哈,作为文学创作,生成

    2023年04月08日
    浏览(34)
  • Kubernetes 笔记(14)— 滚动更新、定义应用版本、实现应用更新、管理应用更新、添加更新描述

    滚动更新,使用 kubectl rollout 实现用户无感知的应用升级和降级。 在 Kubernetes 里,版本更新使用的不是 API 对象,而是两个命令: kubectl apply 和 kubectl rollout ,当然它们也要搭配部署应用所需要的 Deployment 、 DaemonSet 等 YAML 文件。 我们常常会简单地认为“版本”就是应用程序的

    2023年04月19日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包