版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
《程序設(shè)計(jì)實(shí)踐》課程實(shí)驗(yàn)報(bào)告學(xué)號(hào):126040594姓名:王乾帥程序名稱:多項(xiàng)式加法一:程序源碼:#include<iostream>#include<string>usingnamespacestd;intNUM=0;//全局變量,控制結(jié)構(gòu)體下標(biāo),大小代表多項(xiàng)式的項(xiàng)數(shù);intmt=0;structData //結(jié)構(gòu)體,用來(lái)存放單個(gè)項(xiàng)的系數(shù)和冪,分別為x,y;{intx;inty;};DataDa[1000];boolcmp(Dataa,Datab)//為了使用sort對(duì)結(jié)構(gòu)體進(jìn)行排序,自定義cmp函數(shù);{returna.y>b.y;}voidrun(string&a);//自定義函數(shù),用來(lái)對(duì)字符串進(jìn)行處理,提取出字符串中的單個(gè)項(xiàng);intmain(){ inti,stop,sig,sig2=0; stringa,b; cout<<"多項(xiàng)式加減法運(yùn)算器\n"<<"請(qǐng)輸入需要選擇的運(yùn)算(1加法.2減法.)\n"; cin>>sig; cout<<"請(qǐng)輸入第一個(gè)多項(xiàng)式:";//多項(xiàng)式輸入 cin>>a; cout<<"請(qǐng)輸入第二個(gè)多項(xiàng)式:"; cin>>b; run(a);//處理多項(xiàng)式1,將數(shù)據(jù)存入結(jié)構(gòu)體中; if(sig==2)mt=1; run(b);//處理多項(xiàng)式2; sort(Da,Da+NUM,cmp);//對(duì)結(jié)構(gòu)體按照y(即單個(gè)項(xiàng)的冪)的大小排序 for(i=0;i<NUM;)//以下為輸出部分 { stop=i+1;//搜索冪相同的結(jié)構(gòu)體,將x相加,在進(jìn)行各種判斷,進(jìn)而輸出 while(Da[i].y==Da[stop].y&&stop<NUM+1) { stop++; } if(stop-i-1==0)//只搜索到一項(xiàng)的輸出 { if(Da[i].y==0) { //判斷輸出是否為第一項(xiàng),判斷輸出為正數(shù)還是負(fù)數(shù),分別進(jìn)行輸出; if(Da[i].x>0&&i!=0&&sig2==1){cout<<"+"<<Da[i].x;sig2=1;} if(Da[i].x>0&&i!=0&&sig2!=1){cout<<Da[i].x;sig2=1;} if(Da[i].x>0&&i==0){cout<<Da[i].x;sig2=1;} if(Da[i].x<0){cout<<Da[i].x;sig2=1;} } elseif(Da[i].y==1) { if(Da[i].x>1&&i!=0&&sig2==1){cout<<"+"<<Da[i].x;sig2=1;cout<<"x";} if(Da[i].x>1&&i!=0&&sig2!=1){cout<<Da[i].x;sig2=1;cout<<"x";} if(Da[i].x>1&&i==0){cout<<Da[i].x;sig2=1;cout<<"x";} if(Da[i].x==1&&i!=0&&sig2==1){cout<<"+";sig2=1;cout<<"x";} if(Da[i].x==1&&i!=0&&sig2!=1){sig2=1;cout<<"x";} if(Da[i].x==1&&i==0){sig2=1;cout<<"x";} if(Da[i].x<-1){cout<<Da[i].x;sig2=1;cout<<"x";} if(Da[i].x==-1){cout<<"-";sig2=1;cout<<"x";} } else//搜索到多個(gè)項(xiàng)的輸出 { if(Da[i].x>1&&i!=0&&sig2==1){cout<<"+"<<Da[i].x<<"x^"<<Da[i].y;sig2=1;} if(Da[i].x>1&&i!=0&&sig2!=1){cout<<Da[i].x<<"x^"<<Da[i].y;sig2=1;} if(Da[i].x>1&&i==0){cout<<Da[i].x<<"x^"<<Da[i].y;sig2=1;} if(Da[i].x==1&&i!=0&&sig2==1){cout<<"+"<<"x^"<<Da[i].y;sig2=1;} if(Da[i].x==1&&i!=0&&sig2!=1){cout<<"x^"<<Da[i].y;sig2=1;} if(Da[i].x==1&&i==0){cout<<"x^"<<Da[i].y;sig2=1;} if(Da[i].x<-1){cout<<Da[i].x<<"x^"<<Da[i].y;sig2=1;} if(Da[i].x==-1){cout<<"-"<<"x^"<<Da[i].y;sig2=1;} } } else { intsum=0,j; for(j=i;j<stop;j++) { sum+=Da[j].x; } if(Da[i].y==0) { //判斷輸出是否為第一項(xiàng),判斷輸出為正數(shù)還是負(fù)數(shù),分別進(jìn)行輸出; if(sum>0&&i!=0&&sig2==1){cout<<"+"<<sum;sig2=1;} if(sum>0&&i!=0&&sig2!=1){cout<<sum;sig2=1;} if(sum>0&&i==0){cout<<sum;sig2=1;} if(sum<0){cout<<sum;sig2=1;} } elseif(Da[i].y==1) { if(sum>1&&i!=0&&sig2==1){cout<<"+"<<sum<<"x";sig2=1;} if(sum>1&&i!=0&&sig2!=1){cout<<sum<<"x";sig2=1;} if(sum>1&&i==0){cout<<sum<<"x";sig2=1;} if(sum==1&&i!=0&&sig2==1){cout<<"+"<<"x";sig2=1;} if(sum==1&&i!=0&&sig2!=1){cout<<"x";sig2=1;} if(sum==1&&i==0){cout<<"x";sig2=1;} if(sum<-1){cout<<sum<<"x";sig2=1;} if(sum==-1){cout<<"-"<<"x";sig2=1;} } else { if(sum>1&&i!=0&&sig2==1){cout<<"+"<<sum<<"x^"<<Da[i].y;sig2=1;} if(sum>1&&i!=0&&sig2!=1){cout<<sum<<"x^"<<Da[i].y;sig2=1;} if(sum>1&&i==0){cout<<sum<<"x^"<<Da[i].y;sig2=1;} if(sum==1&&i!=0&&sig2==1){cout<<"+"<<"x^"<<Da[i].y;sig2=1;} if(sum==1&&i!=0&&sig2!=1){cout<<"x^"<<Da[i].y;sig2=1;} if(sum==1&&i==0){cout<<"x^"<<Da[i].y;sig2=1;} if(sum<-1){cout<<sum<<"x^"<<Da[i].y;sig2=1;} if(sum==-1){cout<<"-"<<"x^"<<Da[i].y;sig2=1;} } } i=stop; } if(sig2==0)cout<<"0"; cout<<endl; return0;}voidrun(string&a)//自定義函數(shù)的函數(shù)體{ intb[100],i,j; intsum1,sum2; for(i=0;i<a.length();i++) { if(a[i]=='x')//以X為關(guān)鍵字進(jìn)行搜索帶有X的項(xiàng) { sum1=1; intk=i; intw=0; if(a[i-1]=='-')sum1=-1; if(a[k-1]>='0'&&a[k-1]<='9') { sum1=0; while(a[k-1]>='0'&&a[k-1]<='9')//將字符串轉(zhuǎn)化為數(shù)字 { w++; b[w]=a[k-1]-'0'; k--; } for(j=w;j>=1;j--) { sum1=sum1*10+b[j]; } if(a[k-1]=='-')sum1=0-sum1; } sum2=1; if(a[i+1]=='^') { sum2=0; k=i; w=0; while(a[k+2]>='0'&&a[k+2]<='9') { w++; b[w]=a[k+2]-'0'; k++; } for(j=1;j<=w;j++) { sum2=sum2*10+b[j]; } } if(mt==1) { Da[NUM].x=-sum1;Da[NUM].y=sum2; } else {Da[NUM].x=sum1;Da[NUM].y=sum2;} NUM++; } } for(i=0;i<a.length();)//搜索不含X的單個(gè)數(shù)字項(xiàng) { intsum3=0,stop,k; if(a[i]>='0'&&a[i]<='9') { k=i; while(a[k]>='0'&&a[k]<='9'&&k<=a.length()) { k++; } if(k==a.length()&&i==0)//輸入僅有一個(gè)數(shù)字 { stop=k; for(j=i;j<stop;j++) { sum3=sum3*10+(a[j]-'0'); } i=stop+1; } if((a[k]=='+'||a[k]=='-')&&i==0)//輸入有一個(gè)數(shù)字并且在在字符串開頭 { stop=k; for(j=i;j<stop;j++) { sum3=sum3*10+(a[j]-'0'); } i=stop+1; } if((a[i-1]=='+'||a[i-1]=='-')&&k==a.length())//輸入有一個(gè)數(shù)字并且在在字符串結(jié)尾 { stop=k; for(j=i;j<stop;j++) { sum3=sum3*10+(a[j]-'0'); } if(a[i-1]=='-')sum3=-sum3; i=stop+1; } if((a[k]=='+'||a[k]=='-')&&(a[i-1]=='+'||a[i-1]=='-'))//輸入有一個(gè)數(shù)字并且在在字符串中央 { stop=k; for(j=i;j<stop;j++) { sum3=sum3*10+(a[j]-'0'); } if(a[i-1]=='-')sum3=-sum3; i=stop+1; } elsei++; } elsei++; if(su
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年粵教新版七年級(jí)物理下冊(cè)階段測(cè)試試卷含答案
- 2025版無(wú)人駕駛技術(shù)研發(fā)內(nèi)部員工入股分紅合同4篇
- 二零二五版農(nóng)業(yè)用地經(jīng)營(yíng)權(quán)流轉(zhuǎn)與生態(tài)補(bǔ)償合同3篇
- 2025年度婚姻登記證丟失補(bǔ)發(fā)服務(wù)合同4篇
- 2025年度藝術(shù)工作室租賃服務(wù)合同4篇
- 2025年度企業(yè)間綠色信貸借款合同
- 二零二五年度裝配式建筑抹灰勞務(wù)分包技術(shù)合同4篇
- 二零二五年度兒童營(yíng)養(yǎng)面包研發(fā)及訂購(gòu)合同4篇
- 2025年度消防安全管理信息化平臺(tái)建設(shè)合同3篇
- 2025版綠色建筑一體化承包及分包合同
- 2024年社區(qū)警務(wù)規(guī)范考試題庫(kù)
- 2024年食用牛脂項(xiàng)目可行性研究報(bào)告
- 2024-2030年中國(guó)戶外音箱行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略分析報(bào)告
- GB/T 30306-2024家用和類似用途飲用水處理濾芯
- 家務(wù)分工與責(zé)任保證書
- 消防安全隱患等級(jí)
- 溫室氣體(二氧化碳和甲烷)走航監(jiān)測(cè)技術(shù)規(guī)范
- 2023山東春季高考數(shù)學(xué)真題(含答案)
- 為加入燒火佬協(xié)會(huì)致辭(7篇)
- 職業(yè)衛(wèi)生法律法規(guī)和標(biāo)準(zhǔn)培訓(xùn)課件
- 高二下學(xué)期英語(yǔ)閱讀提升練習(xí)(二)
評(píng)論
0/150
提交評(píng)論