求解有理数分式方程含代码功能增强Word格式.docx

上传人:b****1 文档编号:3297517 上传时间:2023-05-01 格式:DOCX 页数:24 大小:247.77KB
下载 相关 举报
求解有理数分式方程含代码功能增强Word格式.docx_第1页
第1页 / 共24页
求解有理数分式方程含代码功能增强Word格式.docx_第2页
第2页 / 共24页
求解有理数分式方程含代码功能增强Word格式.docx_第3页
第3页 / 共24页
求解有理数分式方程含代码功能增强Word格式.docx_第4页
第4页 / 共24页
求解有理数分式方程含代码功能增强Word格式.docx_第5页
第5页 / 共24页
求解有理数分式方程含代码功能增强Word格式.docx_第6页
第6页 / 共24页
求解有理数分式方程含代码功能增强Word格式.docx_第7页
第7页 / 共24页
求解有理数分式方程含代码功能增强Word格式.docx_第8页
第8页 / 共24页
求解有理数分式方程含代码功能增强Word格式.docx_第9页
第9页 / 共24页
求解有理数分式方程含代码功能增强Word格式.docx_第10页
第10页 / 共24页
求解有理数分式方程含代码功能增强Word格式.docx_第11页
第11页 / 共24页
求解有理数分式方程含代码功能增强Word格式.docx_第12页
第12页 / 共24页
求解有理数分式方程含代码功能增强Word格式.docx_第13页
第13页 / 共24页
求解有理数分式方程含代码功能增强Word格式.docx_第14页
第14页 / 共24页
求解有理数分式方程含代码功能增强Word格式.docx_第15页
第15页 / 共24页
求解有理数分式方程含代码功能增强Word格式.docx_第16页
第16页 / 共24页
求解有理数分式方程含代码功能增强Word格式.docx_第17页
第17页 / 共24页
求解有理数分式方程含代码功能增强Word格式.docx_第18页
第18页 / 共24页
求解有理数分式方程含代码功能增强Word格式.docx_第19页
第19页 / 共24页
求解有理数分式方程含代码功能增强Word格式.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

求解有理数分式方程含代码功能增强Word格式.docx

《求解有理数分式方程含代码功能增强Word格式.docx》由会员分享,可在线阅读,更多相关《求解有理数分式方程含代码功能增强Word格式.docx(24页珍藏版)》请在冰点文库上搜索。

求解有理数分式方程含代码功能增强Word格式.docx

定义一个类jisuan接受参数,使用类Fenshi类对运算符进行重载计算。

定义一个jisuan类的动态数组p存储结果。

2.总体设计

2.1程序设计函数接口

1.Fenshi类

1)Fenshi(intn=0,intd=1);

//带默认形参值的构造函数

2)Fenshi(Fenshi&

fen);

//拷贝构造函数

3)~Fenshi();

//析构函数

4)voidsimplify();

//将分式化为最简形式

5)booloperator==(Fenshi&

//运算符重载

6)Fenshioperator+(Fenshi&

fen);

7)Fenshioperator-(Fenshi&

8)Fenshioperator*(Fenshi&

9)Fenshioperator/(Fenshi&

10)voidprint();

//输出分式

11)intGcd(inta,intb);

//辗转相除法求最大公因子

12)boolIsneg();

//判断分式是否为正数

2.jisuan类

1)jisuan();

//默认构造函数

2)jisuan(inta,intb,intc,intd,inte,intf);

//构造函数

3)~jisuan();

4)voidcal();

//计算有理分式的结果

5)voidprint();

//以分数形式输出结果

6)FenshiA;

//待求解方程x的系数

3.主函数

1)voidDrawWarn();

//输出警告界面

2)voidDrawMenu();

//输出菜单

2.2程序功能说明

1)输入参数:

录入方程的参数并输出结果。

2)历史结果:

查询用户计算过的历史记录。

3)查询结果:

按系数或者次序查询计算过的结果。

4)退出系统。

2.3程序流程图

图2-1程序流程图

3.调试结果

3.1程序运行

1)程序启动输入存储结果个数界面

2)主菜单

3)计算界面

4)历史结果界面

5)查询结果界面

6)警告界面

6.1)未存储数据时查询历史结果

6.2)超过给定的最大存储个数

3.2总结分析

本次设计让我对C++有了更进一步的认识,特别是在类与对象这一块,发现了以前很多的知识漏洞。

这个设计过程最难的便是程序的调试了,有时候程序明明看起来并没有任何的错误,但是结果偏偏不对,实在是恼人,可能只是一个小小的错误比如将“==”写成了“=”,但是结果确实完全错误。

我相信在今后的学习真的我会更加努力,积累经验。

使自己在编程等各方面得到提高。

4.程序清单

头文件(类的定义):

classFenshi

{

public:

Fenshi(intn=0,intd=1);

Fenshi(Fenshi&

~Fenshi();

voidsimplify();

//将分式化为最简形式,并检查分母是否为0

//进行运算符的重载

booloperator==(Fenshi&

Fenshioperator+(Fenshi&

Fenshioperator-(Fenshi&

Fenshioperator*(Fenshi&

Fenshioperator/(Fenshi&

voidprint();

intGcd(inta,intb);

//最大公因子

boolIsneg();

private:

intfenmu,fenzi;

};

classjisuan

jisuan();

jisuan(inta,intb,intc,intd,inte,intf);

~jisuan();

voidcal();

//计算

FenshiA;

FenshiB;

FenshiC;

Fenshians;

类的实现:

#include"

dingyi.h"

#include<

conio.h>

iostream>

usingnamespacestd;

math.h>

Fenshi:

:

Fenshi(intn,intd)

this->

fenzi=n;

fenmu=d;

simplify();

}

Fenshi(Fenshi&

fen)

fenmu=fen.fenmu;

fenzi=fen.fenzi;

~Fenshi()

{}

boolFenshi:

operator==(Fenshi&

fen)

if(this->

fenmu==fen.fenmu&

&

this->

fenzi==fen.fenzi)

returntrue;

else

returnfalse;

FenshiFenshi:

operator+(Fenshi&

ans.fenmu=this->

fenmu*fen.fenmu;

ans.fenzi=this->

fenzi*fen.fenmu+this->

fenmu*fen.fenzi;

ans.simplify();

returnans;

operator-(Fenshi&

fenzi*fen.fenmu-this->

operator*(Fenshi&

fenzi*fen.fenzi;

operator/(Fenshi&

fenzi*fen.fenmu;

voidFenshi:

simplify()

if(fenmu<

0)

{

fenmu=-fenmu;

fenzi=-fenzi;

}

inta=abs(fenzi),b=abs(fenmu);

intk;

if(a<

b)

k=Gcd(b,a);

k=Gcd(a,b);

fenmu=fenmu/k;

fenzi=fenzi/k;

intFenshi:

Gcd(inta,intb)

if(b==0)

returna;

returnGcd(b,a%b);

print()

if(fenzi==0)

cout<

<

0;

if(fenmu==1)

fenzi;

elseif(fenmu==-1)

-fenzi;

fenzi<

'

/'

fenmu;

Isneg()

if(fenzi<

else

jisuan:

jisuan():

A(0,1),B(0,1),C(0,1)

jisuan(inta,intb,intc,intd,inte,intf):

A(a,b),B(c,d),C(e,f)

~jisuan()

voidjisuan:

cal()

{

ans=(C-B)/A;

cal();

cout<

"

\t方程为:

endl;

\t"

;

A.print();

x'

if(B.Isneg())

+'

B.print();

="

C.print();

\t结果为:

\tx="

ans.print();

主函数:

voidDrawWarn()

endl

<

\t┏━━━━━━━━━━━━━━━━━━━━━┓"

\t┃请先输入参数!

┃"

\t┗━━━━━━━━━━━━━━━━━━━━━┛"

voidDrawMenu()

system("

cls"

);

\t┃请选择操作┃"

\t┣━━━━━━━━━━━━━━━━━━━━━┫"

\t┃1.输入参数┃"

\t┃2.历史结果┃"

\t┃3.查询结果┃"

\t┃0.退出┃"

intmain()

inta,b,c,d,e,f,n,count=0;

请输入您想要保存的答案个数:

cin>

>

n;

jisuan*p;

p=newjisuan[n];

charch;

boolbeContinue=true;

//表示是否继续,用户选了“退出”,则为false,退出程序

boolbeInited=false;

//表示方程是否被初始化,若没有被初始化,则不允许“输出结果”。

while(beContinue)

DrawMenu();

while

(1)

{

ch=_getch();

if(ch<

='

3'

&

ch>

0'

break;

DrawMenu();

}

switch(ch)

case'

1'

{

system("

if(count==n)

cout<

已经达到最大存储范围"

请按任意键返回"

_getch();

DrawMenu();

}

cout<

<

(a/b)x+c/d=e/f"

\t请依次输入[abcdef]:

a=0;

while(a==0)

\ta="

cin>

a;

if(a==0)

cout<

\t系数不能为0!

请重新输入!

b=0;

while(b==0)

\tb="

b;

if(b==0)

\t分母不能为0!

\tc="

cin>

c;

d=0;

while(d==0)

\td="

d;

if(d==0)

\te="

e;

f=0;

while(f==0)

\tf="

f;

if(f==0)

beInited=true;

jisuanfa(a,b,c,d,e,f);

<

fa.print();

p[count]=fa;

count++;

_getch();

break;

2'

system("

if(beInited)

{

for(inti=0;

i<

count;

i++)

{cout<

第"

i+1<

次计算结果"

p[i].print();

}

else

DrawWarn();

break;

case'

\t┃1.以运行顺序查询┃"

\t┃2.以x的系数查询┃"

boolIsc=true;

while(Isc)

charcha;

while

(1)

cha=_getch();

if(cha<

else

输入错误!

请重新输入"

switch(cha)

case'

{

cout<

请输入查询第几次的结果"

intcha;

cin>

cha;

if(cha<

=count&

cha>

{

cout<

结果为:

p[cha-1].print();

}

else

没有这个结果"

请继续选择查询方法或者返回主菜单"

break;

}

intaa,bb;

boolIsexi=true;

请输入x的系数的分子分母"

aa>

bb;

Fenshichaxun(aa,bb);

for(inti=0;

{

if(p[i].A==chaxun)

{p[i].print();

Isexi=false;

if(Isexi)

Isc=false;

beContinue=false;

return1;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2