求解方程-源程序.doc
《求解方程-源程序.doc》由会员分享,可在线阅读,更多相关《求解方程-源程序.doc(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、如有侵权,请联系网站删除,仅供学习与交流求解方程-源程序【精品文档】第 11 页#include iostream.h #include stdio.h #include conio.h /基本输入输出文件#include string.h #include stdlib.h /定义杂项函数及内存分配函数#include ctype.h /字符处理#include math.h char terms9920;class Equation /定义类Equationpublic:Equation() void jecfc(int,int,int); /解二次方程void getterm(char
2、*,char *,int &); /存放方程各项void getyz(int *,int &,int); /得到因子void jc(char *,char *,float); /降次void gettermf(char *,char *,int); /得到指定幂的项int getxs(char *); /得到系数(整数)int getqium(char *); /求幂int yang(char *,float); /检验根是否正确int exp(int,int); /求某数的次方(整数)float knyz(int *,int *,int,int,char *); /求所有可能的根float
3、exp(float,int); /求某数的次方(实数)/返回equ的系数乘以val的equ的次数的次方的值float calcequval(char *,float); void main()cout使用说明(允许 & 不允许):endl; coutendl; cout1. 在输入的方程后面不能输入 = ;endl; cout2. 所输入的方程必须是从高次到低次依次输入; endl; cout3. 若某项系数为0,可以不输入或输入0作为系数;endl; cout4. 不要用分数作为系数且第一项系数绝对值不小于一;endl; cout5. 要用xn表示指数,x n一可以,但不能用x n表示。en
4、dl; coutendl;Equation E;char *equ,*equ2;int loc=0,a=0,b=0,c=0,numterms;int deg,f_a1000,f_k1000,num_a,num_k;int i;float result;equ=new char5000; equ2=new char5000; cout请输入方程: endl;gets(equ);if(strlen(equ)=0)cout没有输入方程!endl;for(i=0;i99&equloc!=&equloc!=0&equloc!=n;i+)E.getterm(equ,termsi,loc); numterm
5、s=i;if(deg=E.getqium(terms0)2)cout无效输入,输入的方程最高次应大于等于2次endl;return;cout2)E.getyz(f_a,num_a,E.getqium(terms0);for(i=1;inumterms;i+)if( E.getqium(termsi)=0)c= E.getxs(termsi);E.getyz(f_k,num_k,c);if(result= E.knyz(f_a,f_k,num_a,num_k,equ)=0)if(result-0.05f)cout错误!不能解得根。endl;return;E.jc(equ,equ2,result)
6、;strcpy(equ,equ2);loc=0;for(i=0;i99&equloc!=&equloc!=0&equloc!=n;i+)E.getterm(equ,termsi,loc);numterms=i;deg-;for(i=1;inumterms;i+)if( E.getqium(termsi)=1)b= E.getxs(termsi);for(i=1;inumterms;i+)if( E.getqium(termsi)=0)c= E.getxs(termsi);E.jecfc( E.getxs(terms0),b,c);void Equation:jecfc(int a,int b,
7、int c) /解二次方程int r1,r2,r3;float r11,r12;if(b*b-4*a*c0)r1=b*-1;r2=(b*b-4*a*c)*-1;r3=2*a;cout(r1+i*sqrt(r2)/r3;cout , ;cout(r1-i*sqrt(r2)/r3;elseif(sqrt(b*b-4*a*c)-(int)sqrt(b*b-4*a*c)=0)r11=(float)(-b+sqrt(b*b-4*a*c)/(2*a);r12=(float)(-b-sqrt(b*b-4*a*c)/(2*a);coutr11 , r12;elser1=b*-1;r2=b*b-4*a*c;r3
8、=2*a;cout(r1+sqrt(r2)/r3;cout , ;cout(r1-sqrt(r2)/r3;coutendl;void Equation:getterm(char *src,char *dest,int &loc) /存放方程各项 int loc2=0;if(srcloc=-)destloc2=-;loc2+;for(;srcloc+loc2!=+&srcloc+loc2!=-&srcloc+loc2!=n&srcloc+loc2!=0&srcloc+loc2!=;loc2+)destloc2=srcloc+loc2; destloc2=0;loc+=loc2;if(srcloc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 求解 方程 源程序
限制150内