复数的比较
请编写函数,比较复数的值是否相等。
函数定义
// 判断相等(带误差)
int ComplexEq(const COMPLEX *x, const COMPLEX *y);
// 判断不等(带误差)
int ComplexNe(const COMPLEX *x, const COMPLEX *y);
函数说明
ComplexEq 函数判断相等:若 x 和 y 所指复数相等(带误差),则函数值为1(真),否则为0(假)。
ComplexNe 函数判断不等:若 x 和 y 所指复数不等(带误差),则函数值为1(真),否则为0(假)。
示例 1
输入
1.9+2.4i
2.5-0.3i
输出
a != b
示例 2
输入
3.8+6.3i
3.8+6.3i
输出
a == b
代码如下:
#include <stdio.h>
typedef struct
{
float rp;
float ip;
char op;
}COMPLEX;
void ComplexInput(COMPLEX *complex)
{
double i,j;
char op;
scanf("%lf%c%lfi",&i,&op,&j);
complex->rp=i;
if(op=='+')
{complex->ip=j;
complex->op='+';
}
else
complex->ip=-j;
}
// 判断相等(带误差)
int ComplexEq(const COMPLEX *x, const COMPLEX *y)
if((x->rp==y->rp)&&(x->ip==y->ip))
{ return 1;
else
return 0;
}
// 判断不等(带误差)
int ComplexNe(const COMPLEX *x, const COMPLEX *y)
{
if((x->ip!=y->ip)|| (x->rp!=y->rp))
return 1;
else
return 0;
}
int main()
{
COMPLEX a, b;
ComplexInput(&a);
ComplexInput(&b);
if (ComplexEq(&a, &b))
{
puts("a == b");
}
if (ComplexNe(&a, &b))
{
puts("a != b");
}
return 0;
}
如果代码有误,欢迎大家指正。