Avatar billede brian0905 Nybegynder
29. august 2005 - 10:41 Der er 3 kommentarer og
2 løsninger

Smart Lommeregner

Jeg tror for sjov jeg vil kode en lommeregner, også som lidt træning i at parse. Ideen er at lave et stort udtryk, med paranteser osv. og så parse det og udregne totalen... hvordan gør man det på den smarteste måde?

Fx. 5+(-1*5) skriver jeg på en linie og trykker på '=' knappen i min lommeregner, så skulle min lille lommeregner selv kunne regne ud at det giver 0, dvs. tage højde for paranteser m.v.

I version 2.0 skal der også være muligt at gøre dette:

Fx. 8+sin(90), dvs. jeg skal have noget der ligner funktioner ind i mit system.... eventuel link til generel parsning m.v. ville nok hjælpe, eller noget kode :-)
Avatar billede anadan Nybegynder
29. august 2005 - 11:10 #1
Jeg vil anbefale at du laver din parser ved hjælp af et værktøj. C# CUP er en C# version af Java CUP (Construction of Useful Parsers), og har blandt andet et eksempel med en lommeregner. Jeg har selv tidligere lavet et compiler projekt hvor der skulle oversættes fra Java til C++. Her brugte vi CUP med stor succes.

http://www.infosys.tuwien.ac.at/cuplex/cup.htm
Avatar billede driis Nybegynder
29. august 2005 - 11:21 #2
Det svære i at regne et udtryk som ovenstående ud ligger primært i at overholde regler for parenteser og præcedens. Flg. approach er den mest anvendte, og nemt at implementere:
1) Del udtrykket op i tokens. Definer et token som et tal/konstant, en operator, eller en parentes.
2) Konverter til postfix notation
3) Beregn udtrykket udfra postfix notation (er nemt da du blot skal hive tal og operatorer ud fra en stack).

Se denne:
http://www.spsu.edu/cs/faculty/bbrown/web_lectures/postfix/
Avatar billede bitsch Nybegynder
29. august 2005 - 13:46 #3
Der er masser af eksempler på dette på nettet. En af de bedre er denne:
http://www.codeproject.com/vb/net/math_expression_evaluator.asp
Avatar billede brian0905 Nybegynder
29. august 2005 - 14:30 #4
Det var lige det jeg manglede.
bitsch -> skriv lige et svar, så fordeler jeg points
Avatar billede bitsch Nybegynder
29. august 2005 - 15:41 #5
:-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester