版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、#include "iostream.h" #include "stdio.h" #include "conio.h" /基本輸入輸出文件#include "string.h" #include "stdlib.h" /定義雜項(xiàng)函數(shù)及內(nèi)存分配函數(shù)#include "ctype.h" /字符處理#include "math.h" char terms9920;class Equation /定義類Equation public:Equation() void
2、 jecfc(int,int,int); /解二次方程void getterm(char *,char *,int &); /存放方程各項(xiàng)void getyz(int *,int &,int); /得到因子void jc(char *,char *,float); /降次void gettermf(char *,char *,int); /得到指定冪的項(xiàng)int getxs(char *); /得到系數(shù)(整數(shù))int getqium(char *); /求冪int yang(char *,float); /檢驗(yàn)根是否正確int exp(int,int); /求某數(shù)的次方(整數(shù))f
3、loat knyz(int *,int *,int,int,char *); /求所有可能的根float exp(float,int); /求某數(shù)的次方(實(shí)數(shù))/返回equ的系數(shù)乘以val的equ的次數(shù)的次方的值float calcequval(char *,float); ;void main()cout<<"使用說明(允許 & 不允許):"<<endl; cout<<endl; cout<<"1. 在輸入的方程后面不能輸入 = ;"<<endl; cout<<"
4、2. 所輸入的方程必須是從高次到低次依次輸入; "<<endl; cout<<"3. 若某項(xiàng)系數(shù)為0,可以不輸入或輸入0作為系數(shù);"<<endl; cout<<"4. 不要用分?jǐn)?shù)作為系數(shù)且第一項(xiàng)系數(shù)絕對(duì)值不小于一;"<<endl; cout<<"5. 要用xn表示指數(shù),x n一可以,但不能用x n表示。"<<endl; cout<<endl;Equation E;char *equ,*equ2;int loc=0,a=0,b=0,
5、c=0,numterms;int deg,f_a1000,f_k1000,num_a,num_k;int i;float result;equ=new char5000; equ2=new char5000; cout<<"請(qǐng)輸入方程: "<<endl;gets(equ);if(strlen(equ)=0)cout<<"沒有輸入方程!"<<endl;for(i=0;i<99&&equloc!='='&&equloc!='0'&&a
6、mp;equloc!='n'i+)E.getterm(equ,termsi,loc); numterms=i;if(deg=E.getqium(terms0)<2)cout<<"無(wú)效輸入,輸入的方程最高次應(yīng)大于等于2次"<<endl;return;cout<<"該方程的根為:"while(deg>2)E.getyz(f_a,num_a,E.getqium(terms0);for(i=1;i<numterms;i+)if( E.getqium(termsi)=0)c= E.getxs(t
7、ermsi);E.getyz(f_k,num_k,c);if(result= E.knyz(f_a,f_k,num_a,num_k,equ)=0)if(result<0.0f&&result>-0.05f)cout<<"錯(cuò)誤!不能解得根。"<<endl;return;E.jc(equ,equ2,result);strcpy(equ,equ2);loc=0;for(i=0;i<99&&equloc!='='&&equloc!='0'&&eq
8、uloc!='n;i+)E.getterm(equ,termsi,loc);numterms=i;deg-;for(i=1;i<numterms;i+)if( E.getqium(termsi)=1)b= E.getxs(termsi);for(i=1;i<numterms;i+)if( E.getqium(termsi)=0)c= E.getxs(termsi);E.jecfc( E.getxs(terms0),b,c);void Equation:jecfc(int a,int b,int c) /解二次方程int r1,r2,r3;float r11,r12;if(b
9、*b-4*a*c<0)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*
10、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);cout<<r11<<" , "<<r12;elser1=b*-1;r2=b*b-4*a*c;r3=2*a;cout<<"("<<r1<<"+sqrt("<<r2<<")/"<<r3;cout<
11、<" , "cout<<"("<<r1<<"-sqrt("<<r2<<")/"<<r3;cout<<endl;void Equation:getterm(char *src,char *dest,int &loc) /存放方程各項(xiàng) int loc2=0;if(srcloc='-')destloc2='-'loc2+;for(;srcloc+loc2!='+'&&a
12、mp;srcloc+loc2!='-'&&srcloc+loc2!='n'&&srcloc+loc2!='0'&&srcloc+loc2!='='loc2+)destloc2=srcloc+loc2; destloc2='0'loc+=loc2;if(srcloc!='-'&&srcloc!='0')loc+; void Equation:getyz(int *yz_list,int &num,int val)
13、/得到因子int i,fcount=0;num=0;val=abs(val);for(i=1;i<=val;i+)if(float)(float)(float)val/(float)i)-(int)(float)val/(float)i)=0.0f)num+;yz_listfcount=i;fcount+;int Equation:getxs(char *term) /得到系數(shù)char *temp;int i=0,mult=1;temp=new charstrlen(term);if(term0='-')mult=-1;i+;for(;!isdigit(termi)&am
14、p;&!isalpha(termi);i+);if(termi='x')return mult;for(int j=0;isdigit(termi+j);j+)tempj=termi+j;return atoi(temp)*mult;int Equation:getqium(char *term) /求冪char temp10;if(strchr(term,'x')!=NULL)if(strchr(term,'')!=NULL)for(int i=0;termi!=''i+);i+;for(int j=0;isdigit(
15、termi);i+,j+)tempj=termi;tempj='0'return atoi(temp);elsereturn 1;elsereturn 0;int Equation:yang(char *equ,float root) /檢驗(yàn)根是否正確char terms9940;float val99,totalval=0;int loc=0;for(int i=0;equloc!='='&&equloc!='0'&&equloc!='n'i+)getterm(equ,termsi,loc);in
16、t numterms=i;for(i=0;i<numterms;i+)vali= calcequval(termsi,root);totalval+=vali;if(totalval*0.99f>-0.002f&&totalval*0.99f<0.002f)return 0;elsereturn 1;int Equation: exp(int val,int e) /求某數(shù)的次方(整數(shù))int v2=val;if(e=0) return 1;for(int i=1;i<e;i+) v2*=val;return v2;float Equation:exp(
17、float val,int e) /求某數(shù)的次方(實(shí)數(shù))float v2=val;if(e=0) return 1.0f;for(int i=1;i<e;i+) v2*=val; return v2;/返回equ的系數(shù)乘以val的equ的次數(shù)的次方的值float Equation:calcequval(char *equ,float val) int coeff= getxs(equ);int power= getqium(equ);return coeff* exp(val,power);void Equation:jc(char *base,char *newequ,float yz
18、) /降次int synthterms99;int newterms99;int j=0,olddegree;char temp50="",exp10="",exp110=""char newequ120,newequ220; if( yang(base,yz)return;olddegree=getqium(terms0);for(int i=0;i<=olddegree;i+)gettermf(base,temp,i);synthtermsi=getxs(temp);newtermsolddegree-1=(int)synt
19、htermsolddegree;for(i=olddegree-1;i>=1;i-) newtermsi-1=(int)(float)(newtermsi*yz+synthtermsi);for(i=olddegree-1;newtermsi=0;i-);strcpy(newequ,"");for(;i>=0;i-)if(newtermsi!=0)switch(i)case 0:strcpy(exp,"");break;case 1:strcpy(exp,"x");break;default:itoa(i,exp1,10)
20、;strcpy(exp,"x");strcat(exp,exp1);break;if(newtermsi!=1)if(newtermsi<0)itoa(newtermsi,newequ1,10);strcat(newequ1,exp);elseif(i<olddegree-1)strcpy(newequ1,"+");itoa(newtermsi,newequ2,10);strcat(newequ1,newequ2);strcat(newequ1,exp);elseitoa(newtermsi,newequ1,10);strcat(newequ1,exp);elseif(newtermsi<0)strcpy(newequ1,exp);elseif(i<olddegree-1)strcpy(newequ1,"+");strcat(newequ1,exp);elsestrcpy(newequ1,exp);if(newtermsi=1&&exp0='0')if(newtermsi>0)strcpy(newequ1,"+");itoa(newtermsi,newequ2,10
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年通信設(shè)備采購(gòu)與維護(hù)合同2篇
- 電梯安裝工程2025年度技術(shù)咨詢合同6篇
- 二零二五年度論壇活動(dòng)策劃服務(wù)合同模板6篇
- 二零二五版搬家服務(wù)及家居清潔維護(hù)合同3篇
- 二零二五年度廢鋼市場(chǎng)供應(yīng)與環(huán)保處理服務(wù)合同3篇
- 二零二五版房屋買賣及鄰里關(guān)系協(xié)調(diào)服務(wù)合同3篇
- 二零二五年度股東干股合作企業(yè)社會(huì)責(zé)任履行合同3篇
- 幼兒園2025年度食品供應(yīng)合同2篇
- 二零二五版租賃房屋改造裝修合同3篇
- 二零二五年酒店股權(quán)分割與資產(chǎn)重組咨詢合同3篇
- 2023社會(huì)責(zé)任報(bào)告培訓(xùn)講稿
- 2023核電廠常規(guī)島及輔助配套設(shè)施建設(shè)施工技術(shù)規(guī)范 第8部分 保溫及油漆
- 2025年蛇年春聯(lián)帶橫批-蛇年對(duì)聯(lián)大全新春對(duì)聯(lián)集錦
- 表B. 0 .11工程款支付報(bào)審表
- 警務(wù)航空無(wú)人機(jī)考試題庫(kù)及答案
- 空氣自動(dòng)站儀器運(yùn)營(yíng)維護(hù)項(xiàng)目操作說明以及簡(jiǎn)單故障處理
- 新生兒窒息復(fù)蘇正壓通氣課件
- 法律顧問投標(biāo)書
- 班主任培訓(xùn)簡(jiǎn)報(bào)4篇(一)
- 成都市數(shù)學(xué)八年級(jí)上冊(cè)期末試卷含答案
- T-CHSA 020-2023 上頜骨缺損手術(shù)功能修復(fù)重建的專家共識(shí)
評(píng)論
0/150
提交評(píng)論