c++实现复数的四则计算

class.cpp //类其中函数的编写

#include"iostream.h"
#include"CComplex.h"

void CComplex::setvalue(double a,double b)
{
 mr=a;//赋值过程
 mi=b;
}
void CComplex::showvalue()
{
 
 if(mr!=0)//实部不为0
 {
  cout<<mr;
  if(mi>0)//虚部大于0的情况
  {
   if(mi!=1)//虚部不为1的情况
    cout<<"+"<<mi<<"i"<<endl;
   else//虚部为1的情况
    cout<<"+i"<<endl;  
  }
  if(mi<0)//虚部小于0的情况
  {
   if(mi!=-1)//虚部不为-1的情况
    cout<<mi<<"i"<<endl;
   else//虚部为-1的情况
    cout<<"-i"<<endl;
  }
  else
   ;//虚部为零,无操作
 }
 else//实部为0
 {
  if(mi>0)//虚部大于0的情况
  {
   if(mi!=1)//虚部不为1的情况
    cout<<mi<<"i"<<endl;
   else//虚部为1的情况
    cout<<"i"<<endl;  
  }
  if(mi<0)//虚部小于0的情况
  {
   if(mi!=-1)//虚部不为-1的情况
    cout<<mi<<"i"<<endl;
   else//虚部为-1的情况
    cout<<"-i"<<endl;
  }
  if(mi==0)//虚部为零
   cout<<"0"<<endl;//输出0
 }
}
void CComplex::add(CComplex *zc)
{
 zc->mr=zc->mr+mr;
 zc->mi=zc->mi+mi;
}

void CComplex::subtraction(CComplex *zc)
{
 zc->mr=mr-zc->mr;
 zc->mi=mi-zc->mi;
}
CComplex CComplex:: multiply(CComplex zc1,CComplex zc2)
{
 CComplex zc;
 zc.mr=(zc1.mr*zc2.mr)-(zc1.mi*zc2.mi);
 zc.mi=(zc1.mr*zc2.mi)+(zc1.mi*zc2.mr);
 return zc;
}
CComplex CComplex::divide(CComplex zc1,CComplex zc2)
{
 CComplex zc,zc3,temp;

 if(zc2.mr!=0 || zc2.mi!=0)
 {
  zc.mr=zc2.mr;
  zc.mi=zc2.mi*(-1);
  zc3=zc3.multiply(zc1,zc);
  temp=zc3.multiply(zc2,zc);
  zc3.mr=zc3.mr/temp.mr;
  zc3.mi=zc3.mi/temp.mr;
  return zc3;
 }
 else
 {
  cout<<"输入的数字不能均为零!请重新输入。";
 
 }
  
}

 CComplex.h //头文件 类的定义

#ifndef _some
#define _some

class CComplex{
 double mr,mi;
public:
 void setvalue(double a,double b);
 void showvalue();
 void add(CComplex *zc);
 void subtraction(CComplex *zc);
 CComplex multiply(CComplex zc1,CComplex zc2);
 CComplex divide(CComplex zc1,CComplex zc2);
};
#endif

CComplex.cpp //main函数的编写,包括交互的程序编写

#include"iostream.h"
#include"CComplex.h"

void main()
{
 CComplex zc1,zc2;
 int x;
 //赋值
 double a,b;
 cout<<"请输入复数的实部与虚部(实部在前,虚部在后,空格隔开):"<<endl;
 cin>>a>>b;
 
 zc1.setvalue(a,b);
 
 cout<<"请输入复数的实部与虚部(实部在前,虚部在后,空格隔开):"<<endl;
 cin>>a>>b;
 zc2.setvalue(a,b);
 cout<<"请输入需要使用的功能:"<<endl;
 cout<<"1.加法计算"<<endl;
 cout<<"2.减法计算"<<endl;
 cout<<"3.乘法计算"<<endl;
 cout<<"4.除法计算"<<endl;
 for(;1;)
 {
 cin>>x;
 switch(x)
 {
 case 1:
   
   //相加
    zc1.add(&zc2);
   //输出
    cout<<"复数相加的结果:"<<endl;
    zc2.showvalue();
    break;
   
 case 2:
    zc1.subtraction(&zc2);
    cout<<"复数相减的结果:"<<endl;
    zc2.showvalue();
    break;

 case 3:
    //相乘
  
   zc1=zc1.multiply(zc1,zc2);
   cout<<"复数相乘的结果:"<<endl;
   zc1.showvalue();
   break;
 case 4:
    //相除
   
   zc1=zc1.divide(zc1,zc2);
   cout<<"复数相除的结果:"<<endl;
   zc1.showvalue();
   break;
 default:
  cout<<"无此功能"<<endl;
    break;
 
 }
 }
}

与C语言差不多,就是类的使用要小心。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值