Differences

This shows you the differences between two versions of the page.

Link to this comparison view

stack_rpn [2011-03-18 13:38]
Joakim Forsgren
stack_rpn [2017-09-01 14:54]
Line 1: Line 1:
-===== Uppgift Miniräknare ===== 
-Gör en webbsida som jobbar med omvänd polsk notation. Detta sätt att evaluera uttryck tycker jag är överlägset det traditionella sättet (HP:s räknedosor använder ofta detta sätt). 
-Det räcker att er räknare klarar de fyra räknesätten och att nollställa räknaren, dvs tömma stacken (+,-,*,/,c) 
- 
-ex. 
- 
-  Uttrycket (4+5)*(6-7)  
-  slår man in på följande sätt  
-  4 ¶ 5 ¶ + ¶ 6 ¶ 7 ¶ - ¶ * ¶  
-  Där ¶ betyder "ENTER", 
- 
-Stacken kommer att se ut som följande under inmatningen. 
- 
-Stackens utseende. 
-  7  
-  5 6 6 -1  
-  4 4 9 9 9 9 -9 
-   
-Krav:\\ 
-1. Ni skall göra en egen stack, det är med hjälp av denna stack som ni skall lösa uppgiften. Stacken skall ha följande funktioner. 
-<code php> 
-Pop()        // tar bort det översta 
-Top()        // returnerar det översta 
-Push($item)  // lägger in item överst i stacken 
-Size()       // returnerar hur många som finns i stacken 
-IsEmpty()    // returnerar true om stacken är tom 
-PrintStack() // Skriver ut en stack, brukar inte finnas men ni kommer att behöva den. 
-</code> 
-2. Man skall kunna se stacken efter varje inmatning på er sida. 
- 
-Tips 1!  
-Eftersom ni nu läser programmering C så skulle ni kunna göra stacken som en klass. Jag tror inte att det blir svårare och ni kommer då även få lite träning på ProgC 
-<code php> 
-$s->Pop()        // tar bort det översta 
-$s->Top()        // returnerar det översta i stacken 
-$s->Push($item)  // Lägger in $item överst i stacken 
-$->Size()        // returnerar hur många som finns i stacken 
-$s->IsEmpty()    // returnerar true om stacken är tom 
-$s->PrintStack() // Skriver ut stacken, brukar inte finnas men ni kommer att behöva den. 
-</code> 
- 
-Tips 2! 
-Som vanligt kan man spara en hel del tid genom att kolla vilka färdiga funktioner som finns i php (php.net) 
- 
-Tips 3! 
-För att lösa denna uppgift så kan det vara klokt att lagra stacken i en $_SESSION variabel. tex $_SESSION['stack'][array]\\ 
-Om ni vill är det helt OK att utgå från min service_session och lägga till funktionerna. 
-<code php> 
-$session->sPop()        // tar bort det översta 
-$session->sTop()        // returnerar det översta i stacken 
-$session->sPush($item)  // Lägger in $item överst i stacken 
-$sessino->sSize()       // returnerar hur många som finns i stacken 
-$session->sIsEmpty()    // returnerar true om stacken är tom 
-$session->sPrintStack() // Skriver ut stacken, brukar inte finnas men ni kommer att behöva den. 
-</code> 
- 
-Ett körbart [[http://www2.park.se/~jf/ex/rpn_calc.exe|program]] eller  [[http://www2.park.se/~jf/code/rpn.php|web]] för att bättre förstå hur din räknare skall funka. 
- 
-En sida [[http://www.calculator.org/rpn.html|Reverse Polish Notation]] med lite mer info. 
-