首页 > 代码库 > 复数运算
复数运算
#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;
}
#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;
}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。