日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

php计算器使用方法,php--计算器的算法实现(-)

發布時間:2025/3/20 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php计算器使用方法,php--计算器的算法实现(-) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
php--計算器的算法實現(-)

$exp='3*9*9';

echo $exp.'=';

$numStack=new MyStack();

$opeStack=new MyStack();

$index=0;

while(true){

$ch=substr($exp,$index,1);

//判斷是否是字符

if($opeStack->isOper($ch)){

//是運算符

/**

3.如果發現是運算符

3.1 如果符號棧為空,就直接入符號棧

3.2. 如何符號棧,不為空,就判斷

如果當前運算符的優先級小于等于符號棧頂的這個運算符的優先級,就計算,并把計算結果入數棧.然后把當前符號入棧

3.3 如何符號棧,不為空,就判斷

如果當前運算符的優先級大于符號棧頂的這個運算符的優先級,就入棧.

*/

//如何符號棧,不為空,

if($opeStack->isEmpty()==true){

$opeStack->push($ch);

}else{

//符號棧不為空

//如果當前運算符的優先級小于等于符號棧頂的這個運算符的優先級,就計算

$chPRI=$opeStack->PRI($ch);

$stackPRI=$opeStack->PRI($opeStack->getTop());

if($chPRI<=$stackPRI){

$num1=$numStack->pop();

$num2=$numStack->pop();

$ope=$opeStack->getTop();

$res=$opeStack->getResult($num1,$num2,$ope);

$numStack->push($res);

// $opeStack->push($ch);

}else{

$opeStack->push($ch);

}

}//if結束

}else{

$numStack->push($ch);

}

++$index;

if($index==strlen($exp)){

break;

}

}

while(!$opeStack->isEmpty()){

$num1=$numStack->pop();

$num2=$numStack->pop();

$ope=$opeStack->pop();

$res=$opeStack->getResult($num1,$num2,$ope);

$numStack->push($res);

}

echo $numStack->getTop();

class MyStack{

private $top=-1; //模擬棧底,指向-1

private $maxSize=15; //模擬棧的容量為5

private $stack=array();//用來數組來模擬,想數組內填入棧的內容

//判斷是否是運算符

public function isOper($ch){

if($ch=='+'||$ch=='-'||$ch=='*'||$ch=='/'){

return true;

}else{

return false;

}

}

//判斷棧是否為空

public function isEmpty(){

if($this->top==-1){

return TRUE;

}else{

return FALSE;

}

}

//判斷符號的優先級

public function PRI($ch){

if($ch=='*'||$ch=='/'){

return 1;

}else if($ch=='+'||$ch=='-'){

return 0;

}

}

//獲得棧頂的值

public function getTop(){

return $this->stack[$this->top];

}

//計算數值

public function getResult($num1,$num2,$ope){

$res=0;

switch($ope){

case '+':

$res=$num1+$num2;

break;

case '-':

$res=$num2-$num1;

break;

case '*':

$res=$num1*$num2;

break;

case '/':

$res=$num2/$num1;

break;

//erqiqu huibohuayuan 155171111 86

}

return $res;

}

//入棧操作

public function push($val){

///先判斷棧是否已滿

if($this->top==$this->maxSize-1){

echo '棧滿,不能添加';

return; //棧滿 返回

}

//先top上移,然后填充棧內容

$this->top++;

$this->stack[$this->top]=$val;

}

//出棧

public function pop(){

if($this->top==-1){

echo '棧111空';

return; //空棧,無數據,返回

}

//取出棧頂的數據,同時把該數據返回,別忘了把top指針下移

$topValue=$this->stack[$this->top];

$this->top--;

return $topValue;

}

//顯示棧的所有信息

public function showStack(){

if($this->top==-1){

echo '棧空!';

return;//空棧,無數據,返回

}

//結合堆棧的數據結構,是后進先出類型的,因此從棧頂開始,依次往下讀出棧的內容

for($i=$this->top;$i>-1;$i--){

echo 'Stack['.$i.']='.$this->stack[$i].'';

}

}

}

?>

總結

以上是生活随笔為你收集整理的php计算器使用方法,php--计算器的算法实现(-)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。