100分求一小程序

peter9606 2004-05-11 08:23:13
构造一个复数的类
要求可以进行加减乘除运算,但是必须是运算符重载。要求可以运行的。。谢谢啦
...全文
48 点赞 收藏 15
写回复
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
vcchunhong 2004-05-12
如果要想分数那样使用运算符重载的话
复数好象很难办到

应该说办不到的
要用库#include <complex>
回复
一路奔跑 2004-05-12
不能这样的~
自己的作业自己写~

如果是你想自学,这种东西完全得靠自己想出来~
回复
freefalcon 2004-05-12
有没有人帮忙呀?难道若大的论坛就没有人可以写出来么?

——楼主什么口气,为什么要写呢?别人又不是帮你写程序的工具,别人也有自己的事情
帮你修改倒是可以的
回复
languagec 2004-05-12
楼主用的什么教材?
回复
goodname 2004-05-12
写是可以写出来的,但是什么健壮性,可扩展性,运行效率什么的,绝对恐怕
不如标准库写的那么好。
做作业,做这些东西,否则;工业产品的话,放着stl现成的好的不用,为啥要自己写。

楼主贴一个自己的实现,大家或许能够帮你一起找错误,或者分析效率,改进方法等

但是,只是给出一个题目去做,恐怕,也太没意思了吧。

--
得罪莫怪
回复
languagec 2004-05-12
#include <iostream.h>
class complex
{
public:
complex() {real=imag=0;}
complex(double r,double i)
{
real=r;
imag=i;
}
friend complex operator + (const complex &c1,const complex &c2);
friend complex operator - (const complex &c1,const complex &c2);
friend complex operator * (const complex &c1,const complex &c2);
friend complex operator / (const complex &c1,const complex &c2);
friend void print(const complex &c);
private:
double real,imag;
};

complex operator +(const complex &c1,const complex &c2)
{
return complex(c1.real+c2.real,c1.imag+c2.imag);
}

complex operator -(const complex &c1,const complex &c2)
{
return complex(c1.real-c2.real,c1.imag-c2.imag);
}

complex operator *(const complex &c1,const complex &c2)
{
return complex(c1.real*c2.real-c1.imag*c2.imag,c1.real*c2.imag+c1.imag*c2.real);
}

complex operator /(const complex &c1,const complex &c2)
{
return complex((c1.real*c2.real+c1.imag+c2.imag)/(c2.real*c2.real+c2.imag*c2.imag),
(c1.imag*c2.real-c1.real*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag));
}

void print(const complex &c)
{
if(c.imag<0)
cout<<c.real<<c.imag<<'i';
else
cout<<c.real<<'+'<<c.imag<<'i';
}

void main()
{
complex c1(2.0,3.0),c2(4.0,-2.0),c3;
c3=c1+c2;
cout<<"\nc1+c2=";
print(c3);
c3=c1-c2;
cout<<"\nc1-c2=";
print(c3);
c3=c1*c2;
cout<<"\nc1*c2=";
print(c3);
c3=c1/c2;
cout<<"\nc1/c2=";
print(c3);
c3=(c1+c2)*(c1-c2)*c2/c1;
cout<<"\n(c1+c2)*(c1-c2)*c2/c1=";
print(c3);
cout<<endl;
}


你要的是这个吗?
回复
peter9606 2004-05-12
有没有人帮忙呀?难道若大的论坛就没有人可以写出来么?
回复
peter9606 2004-05-12
To : languagec 谢谢啦 已经结贴啦
回复
surstar 2004-05-12
GZ
回复
jmlt1983 2004-05-11
两种方法
//111111111用库
#include<complex>
#include<iostream>
using namespace std;

void main()
{
complex<int> a(1,2);
complex<int> b(2,1);
complex<int> c;
c=a+b;
cout<<c.real()<<"\t"<<c.imag()<<"\n";
c=a*b;
cout<<c.real()<<"\t"<<c.imag()<<"\n";
c=a-b;
cout<<c.real()<<"\t"<<c.imag()<<"\n";
}


//22222222222用数据结构
#include <stdio.h>

struct data
{
float re;
float im;
};
struct data x,y,z;

int main()
{
float mod;
x.re = 1;
x.im = 2;
y.re = 3;
y.im = 4;

mod = (float)(y.re * y.re + y.im * y.im);

z.re = (float)(x.re * y.re + x.im * y.im) / mod;
z.im = (float)(x.im * y.re - x.re * y.im) / mod;

printf(" x/y = [%f] + [%f]i ", z.re ,z.im);
return 0;
}
回复
peter9606 2004-05-11
实现呢? 拜托是自己写的好不好? 拜托了
回复
zxs790501 2004-05-11
complex类接口:
complex
template<class T>
class complex {
public:
typedef T value_type;
T real() const;
T imag() const;
complex(const T& re = 0, const T& im = 0);
complex(const complex& x);
complex& operator=(const complex& rhs);
complex& operator+=(const complex& rhs);
complex& operator-=(const complex& rhs);
complex& operator*=(const complex& rhs);
complex& operator/=(const complex& rhs);
complex& operator=(const T& rhs);
complex& operator=(const T& rhs);
complex& operator+=(const T& rhs);
complex& operator-=(const T& rhs);
complex& operator*=(const T& rhs);
complex& operator/=(const T& rhs);
friend complex<T>
operator+(const complex<T>& lhs, const T& rhs);
friend complex<T>
operator+(const T& lhs, const complex<T>& rhs);
friend complex<T>
operator-(const complex<T>& lhs, const T& rhs);
friend complex<T>
operator-(const T& lhs, const complex<T>& rhs);
friend complex<T>
operator*(const complex<T>& lhs, const T& rhs);
friend complex<T>
operator*(const T& lhs, const complex<T>& rhs);
friend complex<T>
operator/(const complex<T>& lhs, const T& rhs);
friend complex<T>
operator/(const T& lhs, const complex<T>& rhs);
friend bool operator==(const complex<T>& lhs, const T& rhs);
friend bool operator==(const T& lhs, const complex<T>& rhs);
friend bool operator!=(const complex<T>& lhs, const T& rhs);
friend bool operator!=(const T& lhs, const complex<T>& rhs);
};
回复
peter9606 2004-05-11
拜托 谢谢啦 还是给出源程序吧
回复
sharkhuang 2004-05-11
不用自己写了!昨天也看到这样的帖子!:)
回复
freefalcon 2004-05-11
标准库中有
#include <complex>
自己写的话,看看头文件就知道了
回复
发动态
发帖子
C++ 语言
创建于2007-09-28

5.9w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
申请成为版主
社区公告
暂无公告