計算器是帶括號的四則運算實際上利用的是棧後進先出的原則
轉換思想:
}//入棧push
int pop1(stack1 *s, float ch)
//出棧
typedef struct
stack2;
void initstack2(stack2 *s)
int push2(stack2 *s, char ch)
}//入棧push
int pop2(stack2 *s, char ch)
//出棧
int comop(char ch) //判斷是否是運算子
}//判斷ch是否為運算子
char prior[7][7] =
, /*'-'*/,
/*'*'*/,
/*'/'*/,
/*'('*/,
/*')'*/,
/*'#'*/,
};int opid(char op1)
}char precede(char op1, char op2) //優先順序比較
float operation(float a, char op, float b)
}void createexpression(char *exp)
scanf("%s", exp);
}void transmitexpression(char *exp, char postexp) //中綴表示式轉換字尾表示式
postexp[i++] = '#';
}else
switch (precede(fz.data[fz.top], *exp))
}while (fz.data[fz.top] != '#')
postexp[i] = '\0';
}float evaluateexpression(char *postexp) //字尾表示式的計算
push1(&sz, d);
sz.data[sz.top] = d;
break;
}postexp++;
}return(sz.data[sz.top]);
}int error(char *exp) //錯誤表示式判斷
return0;}
void menu()
void clear()
void quit()
void main()
; menu();
while (1)
else
if (error(exp))
case
'b':
clear();
break;
case
'c':
quit();
break;}}
system("pause");
}
c 四則混合運算
最近因專案需求,做了乙個簡易的四則混合運算解析模組。例如計算表示式 34 300 4 2 300 4 2 注 運算子僅支援 五種型別 public inte ce imixedcalculate t exec string expression 介面實現類 public class mixedcal...
python 計算器 四則運算
學習來自 感謝!思路 考慮的四則運算符號 獲取表示式字串 表示式切分 請注意區分 減號 與負號 先出初切 formula list i for i in re.split d d formula if i 然後再判定 if re.search final formula 1 其他正常切分就行 ite...
四則運算計算器
今天做個帶視窗的c 四則運算計算器 輸入中綴表示式 自然表示式 可以用list來放 先把它變成字尾表示式 逆波蘭表示式 用乙個棧放運算子,另乙個棧放字尾表示式 運算子優先順序 1 2 3 4 從左到右遍歷中綴表示式 計算字尾表示式 從左到右掃瞄字尾表示式,如果是數字,放入數字棧。如果是符號,從數字棧...