满意答案

mkblue

2014.06.15

采纳率:48%    等级:9

已帮助:313人

有理数即分数,

分数的数据类型是很简单的。

另外,求有理数的分子,分母的问题,因为给的有理数只能是有限小数,所以根本没有疑问。

但是如果改成:

求分子分母之和最小的,在一定误差范围内的分数,这个问题才有价值

比如:

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

{

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

}

}

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;

}

};

00分享举报

c语言有理数字符形式,C语言设计实现抽象数据类型有理数基本操作包括有理数的加法,减法,乘法,除法,以及求有理数的分子,分...相关推荐

  1. C语言以字符形式读写文件

    C语言以字符形式读写文件 在C语言中,读写文件比较灵活,既可以每次读写一个字符,也可以读写一个字符串,甚至是任意字节的数据(数据块). 以字符形式读写文件时,每次可以从文件中读取一个字符,或者向文件中 ...

  2. 设计实现抽象数据类型“有理数”

    设计实现抽象数据类型"有理数" 设计实现抽象数据类型"有理数" 题目 分析 创建有理数的数据结构 `Init`初始化有理数 `gcd`最大公约数 `Reduct ...

  3. 数据结构:设计实现抽象数据类型“有理数”内容

    题目:设计实现抽象数据类型"有理数" 内容:设计并上机实现抽象数据类型"有理数",有理数的基本操作包括:两个有理数的加.减.乘.除等(包括有理数的创建和输出). ...

  4. c语言加法减法乘法,一元多项式的加法减法乘法c语言描述线性表应用

    一元多项式的加法减法乘法 --(c语言描述)线性表应用 来源:永远的北邮人 vc6.0下调试通过 #include #include #include #include #include #inclu ...

  5. c语言格式字符If,C语言所有语句格式 C语言中的的if语句共有多少种格式?

    导航:网站首页 > C语言所有语句格式 C语言中的的if语句共有多少种格式? C语言所有语句格式 C语言中的的if语句共有多少种格式? 相关问题: 匿名网友: 1.if语句: if(Bool表达 ...

  6. C语言二叉树字符统计,C语言实现二叉树-利用二叉树统计单词数目

    昨天刚参加了腾讯2015年在线模拟考: 四道大题的第一题就是单词统计程序的设计思想: 为了记住这一天,我打算今天通过代码实现一下: 我将用到的核心数据结构是二叉树: (要是想了解简单二叉树的实现,可以 ...

  7. c语言随机字符rand,C语言中生产随机数 rand()函数

    一:如果你只要产生随机数而不需要设定范围的话,你只要用rand()就可以了:rand()会返回一随机数值, 范围在0至RAND_MAX 间.RAND_MAX定义在stdlib.h, 其值为214748 ...

  8. php语言中字符,PHP开发语言中字符窜的高效率写法

    PHP(外文名:PHP: Hypertext Preprocessor,中文名:"超文本预处理器")是一种通用开源脚本语言.语法吸收了C语言.Java和Perl的特点,利于学习,使 ...

  9. c语言数据结构字符串匹配,C语言数据结构之模式匹配字符串定位问题

    字符是计算机的单位,字符的值都取决于字符集,匹配字符串需要找有全新的算法,才能提高程序员的工作效率,今天爱站技术频道就为大家带来了C语言数据结构之模式匹配字符串定位问题,大家参考下文学习吧! C语言数 ...

  10. C语言中文字符索引,C语言关键字中英文对照索引

    C语言关键字中英文对照索引 一. C语言关键字对照 关键字,又称保留字,是C语言中已预先定义.具有特定含义的标识符. 注:C语言中共有32个关键字,所有关键字都用小写字母表示,且这些关键字不能用作用户 ...

最新文章

  1. Codeforces Round #323 (Div. 2) A. Asphalting Roads
  2. 大新闻!HTC旗舰手机已原生支持BCH
  3. IOError: Unable to open file (File signature not found)
  4. 吴恩达深度学习笔记4-Course1-Week4【深层神经网络】
  5. ASP.NET Core 导入导出Excel xlsx 文件
  6. C++ pair使用案例(一)
  7. SC || 记不住的正则
  8. 设置对话框大小和位置
  9. 二叉搜索树相关性质的应用
  10. 重温html5的新增的标签和废除的标签
  11. 记一次网易云解锁灰色音乐代理异常
  12. Matlab200以内所有质数,用matlab编写一个程序:求出200以内的质数,求!!!!急!!!!!...
  13. C#多个DataTable根据某一列匹配,其余字段相加求和的高效算法。
  14. mocha-only和skip的用法
  15. 磨金石教育是正规的吗?插画好学吗?学习插画有哪些小技巧?
  16. Windows11台式机连接Type-C触摸屏显示器
  17. xcode更新一直失败的解决办法
  18. 移动通信平台的搭建(可语音可视屏可收发短信)
  19. abb机器人开通选项_ABB工业机器人系统选项全面介绍--ABB机器人
  20. 陕西师范大学计算机考研复试,复试干货 | 陕西师范大学考研复试经验分享贴...

热门文章

  1. 在windows上配置本地域名解析,配置hosts文件
  2. 麒麟信安携手华为支撑国家电网首批数字换流站试点项目安全高效运行
  3. C++ SLT中的容器学习与函数谓词
  4. LINUX(socket)网络编程部分头文件归纳解释
  5. JavsScript 节流函数 分金定穴
  6. $route.matched
  7. Win10卸载office出现安装包语言不受系统支持
  8. Javascript removeChild()删除节点及删除子节点的方法
  9. 取消管理员取得所有权_win10如何获得管理员所有权?
  10. cannot read property 'options' of underfined