C++实现小型复数计算器

 更新时间:2021年06月17日 15:16:53   作者:名名名名  
这篇文章主要为大家详细介绍了C++实现小型复数计算器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

小型复数计算器项目设计,供大家参考,具体内容如下

一、问题描述及功能要求

1、实现复数的设置和显示。
2、声明一个复数类Complex,重载运算符 “+”、 “-”、 “*”、 “/”,使之能用于复数的加、减、乘、除,运算符重载函数作为Complex类的成员函数。
3、声明一个复数类Complex,重载运算符 “+”,使之能用于复数的加法运算。参加运算的两个运算量可以都是类对象,也可以其中有一个是整数,顺序任意。例如:c1+c2,i+c1, c1+i,均合法(设i为整数,c1,c2为复数),分别求两个复数之和、整数和复数之和,并显示运算结果。
4、实现用运算符 = = 进行复数的相等比较,并显示比较结果。
5、在程序中还应该有构造函数,析构函数,并要用到友元函数。

二、代码实现 带有注释

废话不说,直接代码,欢迎指正。

#include <iostream>
#include <process.h>
using namespace std;//标准命名空间
void home_page()//打印首页
{

    cout<<"\t\t\t--------------欢迎来到复数四则计算器----------------"<<endl;
    cout<<"\t\t\t|                                                  |"<<endl;
    cout<<"\t\t\t|                  服务类型:(1~4):             |"<<endl;
    cout<<"\t\t\t|                1.实数与实数运算;                |"<<endl;
    cout<<"\t\t\t|                2.实数与虚数运算;                |"<<endl;
    cout<<"\t\t\t|                3.虚数与虚数运算;                |"<<endl;
    cout<<"\t\t\t|                4.退出程序。                      |"<<endl;
    cout<<"\t\t\t|                                                  |"<<endl;
    cout<<"\t\t\t----------------------------------------------------"<<endl;
}
void second_page()//打印次页
{
    cout<<"\t\t\t----------------------------------------------------"<<endl;
    cout<<"\t\t\t|                                                  |"<<endl;
    cout<<"\t\t\t|选择你要进行的运算类型(1~6):                 |"<<endl;
    cout<<"\t\t\t|                1.进行加法运算;                  |"<<endl;
    cout<<"\t\t\t|                2.进行减法运算;                  |"<<endl;
    cout<<"\t\t\t|                3.进行乘法运算;                  |"<<endl;
    cout<<"\t\t\t|                4.进行除法运算;                  |"<<endl;
    cout<<"\t\t\t|                5.进行比较运算;                  |"<<endl;
    cout<<"\t\t\t|                6.返回上层目录;                  |"<<endl;
    cout<<"\t\t\t|                                                  |"<<endl;
    cout<<"\t\t\t----------------------------------------------------"<<endl;
}
void third_page()//程序退出提示语句
{
    cout<<"程序已安全退出,感谢您的光顾,为达您的满意,我们力求下次做得更好!"<<endl;
}
class Complex
{
private:
    double real;//定义虚数的实部
    double imag;//定义虚数的虚部
public:

    Complex(double r=0,double i=0):real(r),imag(i) {} //构造函数初始化虚数的实部和虚部
    friend Complex operator +(Complex &c1,Complex &c2)//实现两虚数(或实数)相加
    {
        return Complex(c1.real+c2.real,c1.imag+c2.imag);
    }
    friend Complex operator -(Complex &c1,Complex &c2)//实现两虚数(或实数)相减
    {
        return Complex(c1.real-c2.real,c1.imag-c2.imag);
    }
    friend Complex operator *(Complex &c1,Complex &c2)//实现两虚数(或实数)相乘
    {
        return Complex(c1.real*c2.real-(c1.imag*c2.imag),
                       c1.real*c2.imag+c2.real*c1.imag);
    }
    friend Complex operator /(Complex &c1,Complex &c2)//实现两虚数(或实数)相除
    {
        return Complex(((c1.real*c2.real)-(c1.imag*c2.imag))/
                       ((c2.real*c2.real)+(c2.imag*c2.imag)),
                       ((c1.real*c2.imag)+(c2.real*c1.imag))/
                       ((c2.real*c2.real)+(c2.imag*c2.imag)));
    }
    friend bool operator ==(Complex &c1,Complex &c2)//实现两虚数(或实数)相比较
    {
        if(c1.real==c2.real&&c1.imag==c2.imag)
        {
            return true;
        }
        else
            return false;
    }
    void set_real()//实现给实部赋值
    {
        cin>>real;
    }
    void set_imag()//实现给虚部赋值
    {
        cin>>imag;
    }
    void display()//显示运算结果
    {
        if(imag==0)
        {
            cout<<"结果为:"<<real<<endl;
        }
        else
            cout<<"结果为:"<<real<<"+"<<imag<<"i"<<endl;
    }
    ~Complex(){}//析构函数
} ;
int main()//主函数
{
    int choice,choice1;//定义选择标志
    while(1)
    {
        home_page();
        cout<<"请选择所需的服务:"<<endl;
        cin>>choice;

        switch(choice)
        {
        case 1:
            second_page();
            cout<<"请选择你要进行的运算:"<<endl;
            cin>>choice1;

            switch(choice1)
            {

            case 1:
            {
                Complex c1(0.0,0.0),c2(0.0,0.0),c3(0.0,0.0);
                cout<<"请输入第一个实数"<<endl;
                c1.set_real();
                cout<<"请输入第二个实数"<<endl;
                c2.set_real();
                c3=c1+c2;//+号为已重载运算符,下同
                c3.display();
                return main();//返回主函数,类似于递归,下同
            }
            break;
            case 2:
            {
                Complex c1(0.0,0.0),c2(0.0,0.0),c3(0.0,0.0);
                cout<<"请输入第一个实数"<<endl;
                c1.set_real();
                cout<<"请输入第二个实数"<<endl;
                c2.set_real();
                c3=c1-c2;
                c3.display();
                return main();
            }
            break;
            case 3:
            {
                Complex c1(0.0,0.0),c2(0.0,0.0),c3(0.0,0.0);
                cout<<"请输入第一个实数"<<endl;
                c1.set_real();
                cout<<"请输入第二个实数"<<endl;
                c2.set_real();
                c3=c1*c2;
                c3.display();
                return main();
            }
            break;
            case 4:
            {
                Complex c1(0.0,0.0),c2(0.0,0.0),c3(0.0,0.0);
                cout<<"请输入第一个实数"<<endl;
                c1.set_real();
                cout<<"请输入第二个实数"<<endl;
                c2.set_real();
                c3=c1/c2;
                c3.display();
                return main();
            }
            break;
            case 5:
            {
                Complex c1(0.0,0.0),c2(0.0,0.0);
                cout<<"请输入第一个实数"<<endl;
                c1.set_real();
                cout<<"请输入第二个实数"<<endl;
                c2.set_real();
                if(c1==c2)
                    cout<<"两数相等"<<endl;
                else
                    cout<<"两数不相等"<<endl;
                    return main();
            }
            case 6:
            {

                return main();
            }
            }
            break;
        case 2:
            second_page();
            cout<<"请选择你要进行的运算:"<<endl;
            cin>>choice1;

            switch(choice1)
            {
            case 1:
            {
                Complex c1(0.0,0.0),c2(0.0,0.0),c3(0.0,0.0);
                cout<<"请输入第一个实数"<<endl;
                c1.set_real();
                cout<<"请输入第二个虚数的实部"<<endl;
                c2.set_real();
                cout<<"请输入第二个虚数的虚部"<<endl;
                c2.set_imag();
                c3=c1+c2;
                c3.display();
                return main();
            }
            break;
            case 2:
            {
                Complex c1(0.0,0.0),c2(0.0,0.0),c3(0.0,0.0);
                cout<<"请输入第一个实数"<<endl;
                c1.set_real();
                cout<<"请输入第二个虚数的实部"<<endl;
                c2.set_real();
                cout<<"请输入第二个虚数的虚部"<<endl;
                c2.set_imag();
                c3=c1-c2;
                c3.display();
                return main();
            }
            break;
            case 3:
            {
                Complex c1(0.0,0.0),c2(0.0,0.0),c3(0.0,0.0);
                cout<<"请输入第一个实数"<<endl;
                c1.set_real();
                cout<<"请输入第二个虚数的实部"<<endl;
                c2.set_real();
                cout<<"请输入第二个虚数的虚部"<<endl;
                c2.set_imag();
                c3=c1*c2;
                c3.display();
                return main();
            }
            break;
            case 4:
            {
                Complex c1(0.0,0.0),c2(0.0,0.0),c3(0.0,0.0);
                cout<<"请输入第一个实数"<<endl;
                c1.set_real();
                cout<<"请输入第二个虚数的实部"<<endl;
                c2.set_real();
                cout<<"请输入第二个虚数的虚部"<<endl;
                c2.set_imag();
                c3=c1/c2;
                c3.display();
                return main();
            }
            break;
            case 5:
            {
                Complex c1(0.0,0.0),c2(0.0,0.0),c3(0.0,0.0);
                cout<<"请输入第一个实数"<<endl;
                c1.set_real();
                cout<<"请输入第二个虚数的实部"<<endl;
                c2.set_real();
                cout<<"请输入第二个虚数的虚部"<<endl;
                c2.set_imag();
                if(c1==c2)
                    cout<<"两数相等"<<endl;
                else
                    cout<<"两数不相等"<<endl;
                    return main();
            }
            break;
            case 6:
            {

                return main();
            }
            }

        case 3:
            second_page();
            cout<<"请选择你要进行的运算:"<<endl;
            cin>>choice1;

            switch(choice1)
            {
            case 1:
            {
                Complex c1(0.0,0.0),c2(0.0,0.0),c3(0.0,0.0);
                cout<<"请输入第一个虚数的实部"<<endl;
                c1.set_real();
                cout<<"请输入第一个虚数的虚部"<<endl;
                c1.set_imag();
                cout<<"请输入第二个虚数的实部"<<endl;
                c2.set_real();
                cout<<"请输入第二个虚数的虚部"<<endl;
                c2.set_imag();
                c3=c1+c2;
                c3.display();
                return main();
            }
            case 2:
            {
                Complex c1(0.0,0.0),c2(0.0,0.0),c3(0.0,0.0);
                cout<<"请输入第一个虚数的实部"<<endl;
                c1.set_real();
                cout<<"请输入第一个虚数的虚部"<<endl;
                c1.set_imag();
                cout<<"请输入第二个虚数的实部"<<endl;
                c2.set_real();
                cout<<"请输入第二个虚数的虚部"<<endl;
                c2.set_imag();
                c3=c1-c2;
                c3.display();
                return main();
            }
            break;
            case 3:
            {
                Complex c1(0.0,0.0),c2(0.0,0.0),c3(0.0,0.0);
                cout<<"请输入第一个虚数的实部"<<endl;
                c1.set_real();
                cout<<"请输入第一个虚数的虚部"<<endl;
                c1.set_imag();
                cout<<"请输入第二个虚数的实部"<<endl;
                c2.set_real();
                cout<<"请输入第二个虚数的虚部"<<endl;
                c2.set_imag();
                c3=c1*c2;
                c3.display();
                return main();
            }
            break;
            case 4:
            {
                Complex c1(0.0,0.0),c2(0.0,0.0),c3(0.0,0.0);
                cout<<"请输入第一个虚数的实部"<<endl;
                c1.set_real();
                cout<<"请输入第一个虚数的虚部"<<endl;
                c1.set_imag();
                cout<<"请输入第二个虚数的实部"<<endl;
                c2.set_real();
                cout<<"请输入第二个虚数的虚部"<<endl;
                c2.set_imag();
                c3=c1/c2;
                c3.display();
                return main();
            }
            break;
            case 5:
            {
                Complex c1(0.0,0.0),c2(0.0,0.0),c3(0.0,0.0);
                cout<<"请输入第一个虚数的实部"<<endl;
                c1.set_real();
                cout<<"请输入第一个虚数的虚部"<<endl;
                c1.set_imag();
                cout<<"请输入第二个虚数的实部"<<endl;
                c2.set_real();
                cout<<"请输入第二个虚数的虚部"<<endl;
                c2.set_imag();
                if(c1==c2)
                    cout<<"两数相等"<<endl;
                else
                    cout<<"两数不相等"<<endl;
                    return main();
            }
            case 6://返回上层目录
            {

                return main();
            }
            }
            break;

        case 4://退出程序

            third_page();
            break;
        }
        break;
    }
    return 0;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • C++简明分析临时对象是什么

    C++简明分析临时对象是什么

    对性能来说,许多的问题都需要和出现频率及本身执行一次的开销挂钩,有些问题虽然看似比较开销较大,但是很少会执行到,那也不会对程序有大的影响;同样一个很小开销的函数执行很频繁,同样会对程序的执行效率有很大影响。本章中作者主要根据临时对象来阐述这样一个观点
    2022-04-04
  • 基于openCV实现人脸检测

    基于openCV实现人脸检测

    这篇文章主要为大家详细介绍了基于openCV实现人脸检测的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • C/C++ 中实现让控制台暂停的方法

    C/C++ 中实现让控制台暂停的方法

    这篇文章主要介绍了C/C++ 中实现让控制台暂停的方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • C++算术运算符与类型转换

    C++算术运算符与类型转换

    这篇文章主要介绍了C++算术运算符与类型转换,C++当中提供5种基础的算术运算符,分别是加法、减法、乘法、除法和取模。下main我们就一起来看看下面文章得具体举例与说明,需要的朋友可以参考一下,希望对你有所帮助
    2021-11-11
  • C语言超细致讲解函数递归

    C语言超细致讲解函数递归

    程序调⽤⾃⾝的编程技巧称为递归 recursion)函数⾃⼰调⽤⾃⼰就是递归,你也可以理解成是⼀种嵌套结构,但递归分为俩部分,第⼀是“递”,进⼊嵌套结构。第⼆是”归“,最终会⼀步⼀步返回。第⼀次接触递归都会很懵,慢慢理解这个过程就明⽩了
    2022-05-05
  • C++ ofstream与ifstream详细用法

    C++ ofstream与ifstream详细用法

    ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间
    2013-07-07
  • c++隐式类型转换存在的问题解析

    c++隐式类型转换存在的问题解析

    隐式转换,是指不需要用户干预,编译器私下进行的类型转换行为,很多时候用户都不知道具体进行了哪些转换,这篇文章主要介绍了c++隐式类型转换存在的陷阱,需要的朋友可以参考下
    2022-03-03
  • C程序中可怕的野指针图文详解

    C程序中可怕的野指针图文详解

    这篇文章主要给大家介绍了关于C程序中可怕的野指针的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用C程序具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-07-07
  • C++编程中的或||、与&&、非!逻辑运算符基本用法整理

    C++编程中的或||、与&&、非!逻辑运算符基本用法整理

    这篇文章主要介绍了C++中的或||、与&&、非!逻辑运算符基本用法整理,是C++入门学习中的基础知识,需要的朋友可以参考下
    2016-01-01
  • C++中套接字库sockpp的使用详解

    C++中套接字库sockpp的使用详解

    sockpp是一个开源、简单、现代的C++套接字库,这篇文章主要为大家详细介绍一下套接字库sockpp的使用,文中的示例代码讲解详细,感兴趣的小伙伴可以学习一下
    2023-11-11

最新评论