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

  • 大小: 5KB
    文件類型: .cpp
    金幣: 1
    下載: 0 次
    發布日期: 2021-05-05
  • 語言: C/C++
  • 標簽:

資源簡介

帶有變量的中綴表達式是常見的數學表達式。如果規定變量由長度不超過 8 個小寫字母組成;end為保留字,表示程序段結束;用?表示輸出指定變量的值,則可以設計出比較復雜的表達式(即一個可順序執行語句序列)。例如,如果有如下語句段: abc=10 def=8 c=abc+def abc=abc+5-c*2 ? c ? abc end 則輸出為: c=18 abc=-21 注意:為了簡化編程實現,運算符只有+,-,*,/ ,%和^(指數運算),可以處理圓括號(),并假定輸入的算術表達式正確。 要求:使用棧結構實現。 輸入:表達式序列 輸出:全部指定變量的值 表達式中的全部計算結果均為整數。如果在計算過程中出現除數為0的情況,則輸出:Divide 0. 特殊情況說明: 在表達式中,如果操作數出現負數(例如-8),則要特別注意。例如: 10加-8表示為:10+-8。 10減-8表示為:10--8。

資源截圖

代碼片段和文件信息

#include
#include
#include
typedef?struct
{
????char?c[20];
????int?number;
}store;?
store?data[500];
typedef?struct
{
???int?num[500];
???int?top;
}opnd;
opnd?s1;
typedef?struct
{
????char?operate[500];
????int?top;
}oper;//運算?
oper?s2;
char?pri[9][10]=
{?
????“>><<<<<>>“
????“>><<<<<>>“
????“>>>><><>>“
????“>>>><><>>“
????“>>>><><>>“
????“>>>><><>>“
????“<<<<<<<=?“
????“>>>>>>?>>“
????“<<<<<<};
int?push1(opnd?sint?n)
{
????s1.num[s1.top]=n;
????s1.top++;
}
int?push2(oper?schar?c)
{??????
????s2.operate[s2.top]=c;
????s2.top++;
}
int?pop1(opnd?s)
{
????int?n;
????s1.top--;
????n=s1.num[s1.top];
????return?n;
}
char?pop2(oper?s)
{
????char?c;
????s2.top--;
????c=s2.operate[s2.top];
????return?c;
}

int?signswitch?(char?a)
{???
????char?signs[]={‘+‘‘-‘‘*‘‘/‘‘^‘‘%‘‘(‘?‘)‘‘#‘‘\0‘};
????int?k=0;
????while?(signs[k]!=‘\0‘&&signs[k]!=a)
????????k++;
????if?(signs[k]==a)?return?k;
????else?return?-1;
}
char?judge(char?achar?b)
{
????return?pri[signswitch(a)][signswitch(b)];
}
int?calculate(int?xint?ychar?a)
{
????switch(a)
????{????
????case?‘+‘:?return?x+y;
????????case?‘-‘:?return?x-y;
????????case?‘*‘:?return?x*y;
????????case?‘/‘:?if(y)????return?x/y;
????????????else?{printf(“Divide?0.\n“);return?(12345);}
????????case?‘%‘:?return?(long?int)?fmod(xy);
????????case?‘^‘:?if?(y>=0?)?return?(long?int)?pow(xy);
????????????????????else???????return?(0);
????????default:??printf(“Error?No.?3\n“);
?????????????????????return?0;
????}
}
int?main()
{
????char?str[500]temp0[20]temp1[20]temp2[20]count;
????int?i=0j=0k=0l=0flag=0sign=1num1num2sum=0result;
????push2(s2‘#‘);//運算符最底下#?
????gets(str);
????strcat(str“#“);
????while(strcmp(str“end#“))//strcmp比較兩個字符串??判斷是否結束?
????{
????????i=0;
????????j=0;
????????flag=0;
????????sign=1;
????????sum=0;
????????int?len=strlen(str);
????????while(str[i]!=‘#‘||s2.operate[s2.top-1]!=‘#‘)
????????{
????????????if(flag==0)
????????????{
????????????????if(str[i]>=‘a‘&&str[i]<=‘z‘)
????????????????{????temp0[j]=str[i];j++;i++;}//存儲變量?
????????????????else?if(str[i]==‘=‘)???
????????????????{????flag=1;temp0[j]=0;j=0;i++;}
????????????????else?if(str[i]==‘?‘)
????????????????{
????????????????????for(k=i+2;k????????????????????{????temp2[j]=str[k];j++;}
????????????????????temp2[j]=0;
????????????????????j=0;
????????????????????i=len-1;
????????????????????for(k=0;k????????????????????????if(strcmp(temp2data[k].c)==0)
??

評論

共有 條評論