读书人

结构变量完全不会求教解决办法

发布时间: 2012-06-19 14:45:20 作者: rapoo

结构变量,完全不会,求教
输入4个整数a1,a2,b1,b2,分别表示2个复数的实部与虚部。利用结构变量求解2个复数之积:(a1+a2 i )*(b1+b2i),乘积的实部为:a1*b1-a2*b2,虚部为:a1*b2+ a2*b1

结构变量是怎么回事我都不知道,求高手指导,求程序

[解决办法]
typedef struct _complex
{
int _a;
int _b;
}complex;

int muliplan(complex a, complex b)
{
return a._a * b._a - a._b * b._b;
}
[解决办法]
typedef struct _complex
{
int _a;//实部
int _b;//虚部
}complex;

complex* muliplan(complex& a, complex& b)
{
complex* product=(complex*)malloc(sizeof(complex));
product->_a=a._a*b._a-a._b*b__b;
product->_b=a._b*b._a+a._a*b__b;
return product;
}

两个复数的积仍为复数
[解决办法]

C/C++ code
//complex类#include<iostream.h>#include<math.h>class complex{ double real,imag;public: complex(){real=5;imag=5;}//缺省构造函数 complex(double r){real=r;imag=0;}//只给实部赋值的构造函数 complex(double r,double i){real=r;imag=i;}//同时给实、虚部赋值的函数 double displayreal(){return real;}//返回复数实部 double displayimag(){return imag;}//返回复数虚部 complex operator+(complex c);//实现复数相加 complex operator-(complex c);//实现复数相减 complex operator*(complex c);//实现复数相乘 double cab(complex c);//求复数绝对值(模) complex sqr(complex c);//求复数平方根 friend ostream &operator<<(ostream &out,complex &obj);//实现复数的输出};complex complex::operator+(complex c)//实现复数相加{ real+=c.real; imag+=c.imag; return *this;}complex complex::operator-(complex c)//实现复数相减{ real-=c.real; imag-=c.imag; return *this;}complex complex::operator*(complex c)//实现复数相乘{ real=real*c.real-imag*c.imag; imag=real*c.imag+imag*c.real; return *this;}double complex::cab(complex c)//求复数绝对值(模){ double ri; ri=sqrt(c.real*c.real+c.imag*c.imag); return ri;}complex complex::sqr(complex c)//求复数平方根{ real=sqrt((cab(c)+c.real)/2); imag=sqrt((cab(c)-c.real)/2); return *this;}ostream &operator<<(ostream &out,complex &obj)//实现复数的输出{ if(obj.imag==0)out<<obj.real; else out<<obj.real<<"+"<<obj.imag<<"i"; return out;}void answer(double a,double b,double c)//求根函数{ complex answer1,answer2; double an=b*b-4*a*c; if(an>=0) {  answer1=complex((-b+sqrt(an))/(2*a));  answer2=complex((-b-sqrt(an))/(2*a)); } else {  answer1=complex(-b/(2*a),sqrt(-an)/(2*a));  answer2=complex(-b/(2*a),-sqrt(-an)/(2*a)); } cout<<"The answer is:"<<endl; cout<<answer1<<" and "<<answer2<<endl;}int main()//主函数{ complex a,b(2),c(6,9);//以下测试类中定义的各个函数,你可以删除的 cout<<"a="<<a<<", b="<<b<<", c="<<c<<endl; c=a+b; cout<<"a+b="<<c<<endl; cout<<"a="<<a<<", b="<<b<<", c="<<c<<endl; c=a-b; cout<<"a-b="<<c<<endl; cout<<"a="<<a<<", b="<<b<<", c="<<c<<endl; c=a*b; cout<<"a*b="<<c<<endl; cout<<"a="<<a<<", b="<<b<<", c="<<c<<endl; cout<<"cab(a)="<<a.cab(a)<<endl; cout<<"a="<<a<<", b="<<b<<", c="<<c<<endl; cout<<"sqr(a)="<<a.sqr(a)<<endl;//以上测试类中定义的各个函数 answer(1,1,1);//方程解为虚数的情况 answer(1,3,1);//方程解为实数的情况 return 0;} 

读书人网 >C++

热点推荐