91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 3KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2021-06-06
  • 語言: C/C++
  • 標簽:

資源簡介

c++棧寫的中綴表達式求解,可以計算包含()、/、*、+、-的表達式的解

資源截圖

代碼片段和文件信息

#include?
#include?“Seqstack.h“
#include?
#include?
char?bijiao(char?chchar?ch1);
double?yusuan(double?adouble?bchar?c);
double?tiqu(double?adouble?bchar?s[]);
using?namespace?std;
Seqstack?intstack;
Seqstack?charstack;
int?main()
{
??char?str[30];int?j=0;
??while(true)
??{

??cout<<“請輸入運算表達式“<????cin>>str;
????while(str[j]!=‘\0‘)?//循環指向之后一個字符
????{
????????j++;
????}
????if(str[j-1]!=‘#‘)?//如果最后一個字符不是#
????{
????????str[j]=‘#‘;????//在字符串后面加#
????????str[j+1]=‘\0‘;
????}

????cout<????charstack.push(‘#‘);//在字符棧里入棧#
????char?ch;?????????????//定義字符來保存棧頂的字符
????for(int?i=0;str[i]!=‘\0‘;i++)//循環處理字符串的每個字符
????{
???????ch=charstack.getTop();
???????if(str[i]<=‘9‘&&str[i]>=‘0‘)??//如果是運算符
???????{
???????????int?a=i;????????????????????????????//記錄此時i的位置
???????????while(str[i+1]<=‘9‘&&str[i+1]>=‘0‘)?//如果下個字符也是運算數一直循環讀取整個數
???????????{
???????????????i++;
???????????}
???????????double?temp=tiqu(aistr);??????//將讀到的字符串轉化為整數
???????????intstack.push(temp);
???????}
???????else???????????????????????????????//如果不是運算數則一定是運算符
???????{
????????if(str[i]==‘)‘)?//如果是右括號循環判斷棧頂是不是左括號
??????????{
?????????????char?s=charstack.getTop();
??????????????while(s!=‘(‘)//如果不是則出棧兩個運算數一個運算符運算并將結果入棧
????????????????????{
????????????????????????char?c=charstack.pop();
????????????????????????double?a=intstack.pop();
????????????????????????double?b=intstack.pop();
????????????????????????double?temp=yusuan(abc);
????????????????????????intstack.push(temp);
????????????????????????s=charstack.getTop();
????????????????????}
????????????????????charstack.pop();//如果是則將右括號出棧
????????????????????continue;????//處理下個字符
??????????}

??????????if(str[i]==‘(‘)??//若果是左括號直接入棧
?????????????{
?????????????????charstack.push(‘(‘);
?????????????????continue;
?????????????}
??????????if(bijiao(str[i]ch)==‘>‘)//如果該運算符優先級大于棧頂字符的優先級
????????????{
??????????????charstack.push(str[i]);?//入棧
??????????????//ch=str[i];
?????????????//?cout<??????????????continue;
??????????}
??????????if(bijiao(str[i]ch)==‘<‘)//如果該運算符優先級小于棧頂字符的優先級
??????????{
??????????????if(ch==‘(‘)//如果此時棧頂字符為左括號

?????????????????{
??????????????????charstack.push(str[i]);?//直接入棧
??????????????????continue;
?????????????????}?????????????????????//否則出棧兩個運算數一個運算符運算并將結果入棧繼續處理該字符
??????????????double?c=charstack.pop();
??????????????double?a=intstack.pop();
??????????????double?b=intstack.pop();
??????????????double?temp=yusuan(abc);
??????????????intstack.push(temp);
??????????????i--;
??????????????//cout<??????????????continue;
??????????}

??????????if(bijiao(str[i]ch)==‘=‘)?//如果該運算符等于棧頂字符
??????????{
??????????????charstack.pop();??//出棧?處理完成
??????????????//cout<??????????????continue;
??????????}

???????}

????}
????//cout<????cout<???//cout<

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2013-10-27?13:11??中綴表達式求解\
?????文件????????4870??2013-10-27?13:08??中綴表達式求解\main.cpp
?????文件?????????526??2013-10-21?13:55??中綴表達式求解\Seqstack.h

評論

共有 條評論