1.定义复数Complex类,使用友元,完成复数的加法、减法、乘法和除法运算,以及对复数的输出。

求大神~~~~

#pragma once
#include <iostream>
using namespace std;
class Complex
{
public:
Complex(double re=0.,double im=0.)
{
real=re;
imag=im;
}
void setreal(const double r);
void setimag(const double i);
friend Complex operator-(const Complex &);
friend istream& operator>>(istream &in,Complex &c);
friend ostream& operator<<(ostream &,const Complex &);
friend Complex operator+(const Complex&,const Complex&);
friend Complex operator-(const Complex&,const Complex&);
friend Complex operator*(const Complex&,const Complex&);
friend Complex operator/(const Complex&,const Complex&);
const double getreal(){return real;}
const double getimag(){return imag;}
~Complex(void);
private:
double real;
double imag;
};

#include "Complex.h"
Complex::~Complex(void)
{
}
inline void Complex::setreal(const double r){real=r;}
inline void Complex::setimag(const double i){imag=i;}
istream& operator>>(istream &in,Complex &c)
{
return in>>c.real>>c.imag;
}
ostream& operator<<(ostream &out,const Complex &c)
{
if(c.imag<1E-14&&c.imag>-1E-14)
return out<<c.real;
else if(c.real<1E-14&&c.real>-1E-14)
return out<<c.imag<<"i";
else if(c.imag>0)
return out<<c.real<<"+"<<c.imag<<"i";
else
return out<<c.real<<c.imag<<"i";
}
Complex operator+(const Complex& a,const Complex& b)
{
return Complex(a.real+b.real,a.imag+b.imag);
}
Complex operator-(const Complex& a,const Complex& b)
{
return Complex(a.real-b.real,a.imag-b.imag);
}
Complex operator*(const Complex& a,const Complex& b)
{
return Complex(a.real*b.real-a.imag*b.imag,a.imag*b.real+a.real*b.imag);
}
Complex operator/(const Complex& a,const Complex& b)
{
double abs=b.real*b.real+b.imag*b.imag;
return Complex((a.real*b.real+a.imag*b.imag)/abs,(a.imag*b.real-a.real*b.imag)/abs);
}
Complex operator-(const Complex &c)
{
return Complex(-c.real,-c.imag);
}

上面一个是.h头文件 一个是CPP 实现文件 包括 输入输出 加减乘除 和负号追问

我用的VS2010 怎么运行不了呢

1>e:\编程软件\自编程序\新程序\新程序\xsjz.cpp(31): fatal error C1083: 无法打开包括文件:“Complex.h”: No such file or directory

追答

上面一个是.h头文件 一个是CPP 实现文件 是两个文件 !!!你自己分开一下!!!

追问

知道为什么运行不了了~~~这不是C++写的吧。。。怎么是in out 不是cin cout 吗?

追答

LZ 这真是C++写的 受不了 等下 我给你改下。。。
in out 是i,ostream类型 用来重载输入输出的!!
下面的代码 你贴一下 自己写个main函数
#include
using namespace std;
class Complex
{
public:
Complex(double re=0.,double im=0.)
{
real=re;
imag=im;
}
void setreal(const double r);
void setimag(const double i);
friend Complex operator-(const Complex &);
friend istream& operator>>(istream &in,Complex &c);
friend ostream& operator>(istream &in,Complex &c)
{
return in>>c.real>>c.imag;
}
ostream& operator-1E-14)
return out-1E-14)
return out0)
return out<<c.real<<"+"<<c.imag<<"i";
else
return out<<c.real<<c.imag<<"i";
}
Complex operator+(const Complex& a,const Complex& b)
{
return Complex(a.real+b.real,a.imag+b.imag);
}
Complex operator-(const Complex& a,const Complex& b)
{
return Complex(a.real-b.real,a.imag-b.imag);
}
Complex operator*(const Complex& a,const Complex& b)
{
return Complex(a.real*b.real-a.imag*b.imag,a.imag*b.real+a.real*b.imag);
}
Complex operator/(const Complex& a,const Complex& b)
{
double abs=b.real*b.real+b.imag*b.imag;
return Complex((a.real*b.real+a.imag*b.imag)/abs,(a.imag*b.real-a.real*b.imag)/abs);
}
Complex operator-(const Complex &c)
{
return Complex(-c.real,-c.imag);
}

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

大家正在搜

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网