求解

llcnllcn 2003-05-31 03:02:26
考虑复数计算问题:

形如Z=a+ib的数,(其中a和b为实数,i*i=-1)叫做复数。复数的计算规则如下:

(a+ib)+(c+id)=(a+c)+i(b+d)
(a+ib)-(c+id)=(a-c)+i(b-d)
(a+ib)×(c+id)=(ac-bd)+i(ad+bc)
ac+bd bc-ad
(a+bi)÷(c+id)=-------+i--------
c*c+d*d c*c+d*d

a+ib的共轭是a-ib

复数的模:(a*a+b*b)的开方

设计并实现一个类Complex,要求提供复数乘法、除法、求模(操作符为!)及求共轭(操作符为~)运算的方法,提供方便的输入及输出操作(重载<<及>>操作符)。设计main()函数,从磁盘文件中读取6个不同的复数,测试你的设计结果,将测试结果输出到屏幕上。磁盘文件中数据的存储格式示例如下:

23.4+i179.3
6.0-i7.5
81.95+i13.6
572.315-i91.46
41.2+i40.76
63.0-i204.97

如何实现从磁盘读文件?
...全文
46 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
llcnllcn 2003-06-03
  • 打赏
  • 举报
回复
或者能不能直接就把复数的实部和虚部取出来,转化成double型。
llcnllcn 2003-06-03
  • 打赏
  • 举报
回复
要求:
在c:\Complex.txt里面按行读取6个形如a+ib的复数
分别把这6个复数作为字符串分别赋值给一个数组的头6个元素。
再把复数的实部和虚部分别转化成整数。
llcnllcn 2003-06-03
  • 打赏
  • 举报
回复
比如c:\Complex.txt
里面的复数为:
23.4+i179.3
6.0-i7.5
81.95+i13.6
572.315-i91.46
41.2+i40.76
63.0-i204.97

每行一个复数
boyfling 2003-06-03
  • 打赏
  • 举报
回复
文件中的存放格式如何?
llcnllcn 2003-06-03
  • 打赏
  • 举报
回复
我已经实现了计算及重载功能,现在如何实现从磁盘文件中读取复数?

重分酬谢!
llcnllcn 2003-06-03
  • 打赏
  • 举报
回复
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <fstream>

using namespace std;

class Complex
{
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 int operator! (const Complex& c);
friend Complex operator~ (const Complex& c);
friend ostream& operator<<(ostream& os,const Complex& c);
//friend ostream& operator>>(ostream& os,const Complex& c);

private:
double re;
double im;
public:
Complex(double r,double i);
Complex(){};


};
Complex::Complex(double r,double i)
{
re = r;
im = i;
}
Complex operator+ (const Complex& c1, const Complex& c2)
{
return Complex(c1.re+c2.re,c1.im+c2.im);
}
Complex operator-(const Complex& c1,const Complex& c2)
{
return Complex(c1.re-c2.re,c1.im-c2.im);
}
Complex operator*(const Complex& c1,const Complex& c2)
{
return Complex((c1.re*c2.re-c1.im*c2.im),(c1.re*c2.im+c1.im*c2.re));
}
Complex operator/(const Complex& c1,const Complex& c2)
{
return Complex((c1.re*c2.re+c1.im*c2.im)/(c2.re*c2.re+c2.im*c2.im),
(c1.im*c2.re-c1.re*c2.im)/(c2.re*c2.re+c2.im*c2.im));
}
int operator!(const Complex& c)
{
return (c.re*c.re+c.im*c.im);
}
Complex operator~(const Complex& c)
{
return Complex(c.re,-c.im);
}

ostream& operator<<(ostream& os,const Complex& c)
{
if(c.im<0)
{
os<<c.re<<c.im<<"i";
}
else if(c.im>0)
{
os<<c.re<<"+"<<c.im<<"i";
}
//os<<endl;
return os;
}
/*
istream& operator>>(istream& is,const Complex& c)
{
return is;
}*/

void main()
{
Complex c1,c2,c3,c4,c5,c6,c7;
int c8;

Complex c1(3.0,2.0);
Complex c2(6.0,-1.0);
Complex c3,c4,c5,c6,c7;

cout << "计算结果:";
cout << "c1 = "<<c1;
cout << "c2 = "<<c2;
c3 = c1+c2;
c4 = c1-c2;
c5 = c1*c2;
c6 = c1/c2;
c7 = ~c1;
c8 = !c1;
cout<<"\nc1+c2= "<<c3;
cout<<"\nc1-c2= "<<c4;
cout<<"\nc1*c2= "<<c5;
cout<<"\nc1/c2= "<<c6;
cout<<"\n~c1= "<<c7;
cout<<"\n!c1= "<<c8;
cout<<endl;
}

70,022

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧