首页 > 代码库 > 复数运算

复数运算

#include<iostream>
#include<cmath>
using namespace std;
struct node  
{
int shi;
int xu;
int data;
};
int main()
{
    int shinum=0;
    int xunum=0;
    int n;
    cin>>n;
    node*num=new node[n];
    char*a=new char[n-1];
    for(int i=0;i<n-1;i++)
    {
        cin>>num[i].data;
        cin>>a[i];
    }
    cin>>num[n-1].data;
    for(i=0;i<n;i++)
    {   num[i].xu=0;
         num[i].shi=0;
        for(int j=0;j<4;j++)
        {
            num[i].xu+=(num[i].data%16)*pow(16,j);
            num[i].data/=16;
        }
    num[i].shi=num[i].data;
    }
    //复数加公式:
//(a,bi) + (c,di) = (a + c),(b + d)i  
/*复数减公式:
(a,bi) + (c,di) = (a - c),(b - d)i   
复数乘公式:
(a,bi) * (c,di) = (ac - bd),(ad + bc)i  
复数除公式:
(a,bi) / N = (a/N),(b/N)i
*/
for(i=0;i<n;i=i+2)
{
    if(shinum>32767)
        shinum=32767;
    else if(shinum<-32768)
        shinum=-32768;
   shinum+=num[i].shi*num[i+1].shi-num[i].xu*num[i+1].xu;
   if(xunum>32767)
        xunum=32767;
    else if(xunum<-32768)
        xunum=-32768;
    xunum+=num[i].shi*num[i+1].xu+num[i].xu*num[i+1].shi;
}
if(shinum>32767)
        shinum=32767;
    else if(shinum<-32768)
        shinum=-32768;
    shinum=shinum/n;
    cout<<shinum<<endl;
    if(xunum>32767)
        xunum=32767;
    else if(xunum<-32768)
        xunum=-32768;
    xunum=xunum/n;
    cout<<xunum<<endl;
cout<<shinum*pow(16,4)+xunum<<endl;
 
 
delete[] num;
delete[] a;
return 0;
}