C语言设计实现抽象数据类型"有理数"基本操作包括有理数的加法,减法,乘法,除法,以及求有理数的分子,分最后是分母

来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/25 10:13:28
C语言设计实现抽象数据类型"有理数"基本操作包括有理数的加法,减法,乘法,除法,以及求有理数的分子,分最后是分母C语言设计实现抽象数据类型"有理数"基本操作包括有理数的加法,减法,乘法,除法,以及求有

C语言设计实现抽象数据类型"有理数"基本操作包括有理数的加法,减法,乘法,除法,以及求有理数的分子,分最后是分母
C语言设计实现抽象数据类型"有理数"基本操作包括有理数的加法,减法,乘法,除法,以及求有理数的分子,分
最后是分母

C语言设计实现抽象数据类型"有理数"基本操作包括有理数的加法,减法,乘法,除法,以及求有理数的分子,分最后是分母
有理数即分数,
分数的数据类型是很简单的.
另外,求有理数的分子,分母的问题,因为给的有理数只能是有限小数,所以根本没有疑问.
但是如果改成:
求分子分母之和最小的,在一定误差范围内的分数,这个问题才有价值
比如:
0.3333333,如果误差为1e-4
那么1/3明显要比333333/10000000
下面给出一个实现(C++):
struct RatNum
{
int a,b;
static int GCD(int a,int b)
{
if(a<0)a=-a;
if(b<0)b=-b;
if(a==0)return b;
if(b==0)return a;
if(a<b)
{
int c=a;
a=b;
b=c;
}
unsigned int c;
while(c= a % b)
{
a = b ;
b = c;
}
return b;
}
explicit RatNum(int aa=0,int bb=1)
:a(aa),b(bb)
{
}
explicit RatNum(double num,double esp=0.00000001)
{
if(esp<0)esp=-esp;
for(b=1;;b++)
{
a=b*num+.5;
double k=a-b*num;
if(k<0)k=-k;
if(k<esp)break;
}
}
void norm()//约分
{
int c=GCD(a,b);
a/=c;
b/=c;
if(b<0)
{
a=-a;
b=-b;
}
}
RatNum operator/(const RatNum& f)const
{
RatNum d=*this;
d.a*=f.b;
d.b*=f.a;
return d;
}
RatNum operator-()const
{
RatNum ret=*this;
ret.a=-ret.a;
return ret;
}
void operator*=(const RatNum& f)
{
a*=f.a;
b*=f.b;
norm();
}
RatNum operator*(const RatNum& f)const
{
RatNum d=*this;
d*=f;
return d;
}
RatNum operator*(int q)const
{
RatNum d=*this;
d.a*=q;
return d;
}
void operator-=(const RatNum& f)
{
int bb=b;
a*=f.b;
b*=f.b;
a-=f.a*bb;
}
void operator+=(const RatNum& f)
{
int bb=b;
a*=f.b;
b*=f.b;
a+=f.a*bb;
}
void positive()
{
if (a<0)a=-a;
}
bool operator==(int n)
{
return a==n*b;
}
void operator=(int q)
{
a=q;
b=1;
}
};

C语言设计实现抽象数据类型有理数基本操作包括有理数的加法,减法,乘法,除法,以及求有理数的分子,分最后是分母 设计实现抽象数据类型“有理数”.基本操作包括有理数的加法,减法,乘法,除法,以及求有理数的分子,分最后一句是“以及求有理数的分子,分母” 什么是“匿名”结构指针(不完全结构类型指针)?( 在C语言中实现抽象数据类型什么方法最好 ) 从C语言的角度来解释什么是抽象数据类型? 数据结构几种抽象数据类型的实现 试用C语言的结构类型定义表示复数的抽象数据类型(1)在复数内部用浮点数定义其实部与虚部; (2)设计实现复数的+、-、×、÷等运算的函数.要求运行界面如下:please input first complex n 为什么要将数据结构类型设计成抽象数据类型 有理数的四则运算(C语言) 急用![问题描述]设计一个可进行有理数运算的演示程序.[基本要求]实现两个有理数相加、相减、相乘、相除的运算. 数据结构 抽象数据类型是什么? C语言数据类型及表达式问题, C语言各个数据类型取值范围 抽象数据类型怎么去理解,是不是数据类型的一个想像,假设.但可以实现的,又不用关心怎么存储和实现. 广义表基本运算(建立、查找、求表头、求表尾、深度)数据结构的设计题目,要求用C语言实现~``谢谢~·符合要求有追加分的``` 为什么要定义抽象数据类型 为什么要定义抽象数据类型 设计大数类.可以实现大数的基本加减乘除运算.用C++语言 来编写 (C语言)表达式的值的数据类型就是表达式中级别最高的数据类型 请将C语言的数据类型和其他高级语言的数据类型作比较.c有哪些特点?