(完整word版)數(shù)據(jù)結(jié)構(gòu)計(jì)算器_第1頁
(完整word版)數(shù)據(jù)結(jié)構(gòu)計(jì)算器_第2頁
(完整word版)數(shù)據(jù)結(jié)構(gòu)計(jì)算器_第3頁
(完整word版)數(shù)據(jù)結(jié)構(gòu)計(jì)算器_第4頁
(完整word版)數(shù)據(jù)結(jié)構(gòu)計(jì)算器_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

#include<stdio.h>#include<iostream>#include<string>#include<stack>#include<map>#include<stdlib.h>#include<cstring>usingnamespacestd;charnifix_expre[200];//存放中綴表達(dá)式stringsuffix_expre;//后綴表達(dá)式,最后轉(zhuǎn)換成constchar*map<string,double>string_num;//用于將表達(dá)式中各個(gè)數(shù)字映射成單個(gè)字符+'\0'map<char,int>out;//外部?jī)?yōu)先級(jí)map<char,int>in;//內(nèi)部?jī)?yōu)先級(jí)stack<char>operation;stack<string>num;stack<string>temp;charop[7]={'+','-','*','/','#','(','('};stringsnum[11]={"a","b","c","d","e","f","g","h","i","j","k"};boolisnotoperation(chara){if(a=='+'||a=='-'||a=='*'||a=='/'||a=='#'||a=='('||a==')')returnfalse;returntrue;}voidprechange(char*a){intj=0;intlength=strlen(a);//cout<<i;stringnew_nifix;/*for(inti=0;i<length;i++){if((*(a+i)=='+'||*(a+i)=='-'||*(a+i)=='*'||*(a+i)=='/')&&*(a+i+1)=='-'){for(intj=length;j>i+1;j--){*(a+j)=*(a+j-1);}*(a+i+1)='0';length++;}}cout<<a<<endl;*/for(inti=0;i<length;i++){stringanum;while(isnotoperation(*(a+i))){anum+=*(a+i);i++;}stringkk;if(strlen(anum.c_str())){doublebnum=atof(anum.c_str());string_num[snum[j]]=bnum;kk=snum[j++];}new_nifix=new_nifix+kk+*(a+i);}//測(cè)試輸出處理的數(shù)字cout<<new_nifix<<endl;map<string,double>::iteratorit=string_num.begin();for(;it!=string_num.end();it++)cout<<it->first<<""<<it->second<<endl;strcpy(a,new_nifix.c_str());}voidchange(char*a){intn=strlen(a);for(inti=0;i<n;i++){if(isnotoperation(*(a+i))){stringkk;kk+=*(a+i);num.push(kk);//cout<<"shuzi"<<kk<<endl;}else{if(operation.empty())operation.push(*(a+i));else{if(out[*(a+i)]>in[operation.top()])operation.push(*(a+i));elseif(out[*(a+i)]==in[operation.top()]){operation.pop();}elseif(out[*(a+i)]<in[operation.top()]){while(out[*(a+i)]<in[operation.top()])//此處切記切記加循環(huán)!?。chartemp_oper=operation.top();operation.pop();stringkk;kk+=temp_oper;temp.push(kk);for(intm=0;m<2;m++){kk=num.top();num.pop();temp.push(kk);}kk=temp.top();temp.pop();for(intm=0;m<2;m++){kk+=temp.top();temp.pop();}num.push(kk);//cout<<kk<<endl;}if(out[*(a+i)]==in[operation.top()])//這里一定要比較彈出相等的等號(hào){//cout<<operation.top()<<endl;operation.pop();}else{operation.push(*(a+i));}}}}}suffix_expre=num.top();cout<<suffix_expre<<endl;}doublecaclu(doublea,doubleb,charc){switch(c){case'+':returna+b;case'-':returna-b;case'*':returna*b;case'/':if(b==0){cout<<"youwu"<<endl;return-500000;}elsereturna/b;}}doublecacluate(stringbb){stack<double>last;charend[200];strcpy(end,bb.c_str());//cout<<end<<endl;for(inti=0;i<strlen(end);i++){if(isnotoperation(*(end+i))){stringkk;kk+=*(end+i);doubleaa=string_num[kk];last.push(aa);}else{doubleb=last.top();last.pop();doublea=last.top();last.pop();doubleresult=caclu(a,b,*(end+i));if(result==-500000)return-500000;last.push(result);}}returnlast.top();}intmain(){stringbegin;while(cin>>begin){begin='#'+begin+'#';strcpy(nifix_expre,begin.c_str());//cin>>nifix_expre;prechange(nifix_expre);//cout<<nifix_expre<<endl;in['#']=out['#']=0;in['(']=out[')']=1;i

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論