login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[REGEX] haakjes in berekeningen

Offline nick5556 - 16/11/2012 15:49 (laatste wijziging 16/11/2012 15:50)
Avatar van nick5556PHP beginner Hallo,

Ik ben op het moment bezig met een script waarin uitgebreide berekeningen gedaan worden. Deze berekeningen worden via een tekstveld(meeste zijn wel al voorgeprogrammeerd) ingevoerd. Hiervoor moet ik dus de berekeningen tussen de haakjes eerst uitrekenen en zal ik deze uit een string als:
  1. PERCENT(√((x + y)^(x + z)), 10)

Dit is een van de berekeningen die gedaan moeten worden. Hierin moeten dus eerst 'x+y' en daarna x+z uitgerekend worden, vervolgens √(antwoord1 ^ antwoord2) uitgerekend worden, hiervan moet is 10 procent het antwoord.

Nu moet ik dus een manier hebben om deze berekeningen tussen de haakjes eerst uit te rekenen. Het enige probleem waar ik een beetje tegen aan loop is dat ik niet geweldig goed ben met reguliere expressies, hoe zou ik nu dus het deel met ((x + y)^(x + z)) uit de bovenstaande berekening kunnen halen en dan(via een recursieve functie?) daaruit weer de (x + y) en de (x + z) kunnen halen?

Alvast bedankt,
Nick.

[EDIT] √ is het wortelteken!

4 antwoorden

Gesponsorde links
Offline marten - 16/11/2012 15:53
Avatar van marten Beheerder Kijk hier eens naar:
http://stackove...expression
Offline nick5556 - 16/11/2012 16:24
Avatar van nick5556 PHP beginner Met deze mogelijkheid is het maar mogelijk dat er maar 4 nested haken mogelijk zijn. Waar ik een beetje op doel is de waarde voor het haakje op te slaan, in dit geval is dit niet van toepassing, de waarde binnen de haken(deze worden doorgestuurd naar de functie) en de waarde na de haken. Vervolgens word het gene binnen de haken uitgevoerd en word alles weer in een normale berekening terug gezet, vervolgens word de berekening terug gestuurd naar de functie om te kijken of er meer haakjes zijn of dat de berekening gewoon door kan gaan.
Offline Martijn - 16/11/2012 17:46 (laatste wijziging 16/11/2012 17:52)
Avatar van Martijn Crew PHP Ik heb in een boek geleerd hoe je dat doet, ff zoeken. Je doet het met push en pop.

Edit: Hmm, ik weet exact wat ze bedoelen in het boek, maar ik kan er geen foto van maken wat het is niet zo duidelijk, en ik kan het neit uitleggen -_-

edit2: Sorry, ik heb even zitten zoeken naar een php variant (boek is voor C), maar kan het niet vinden. Met regex gaat het het nooit worden, want een regex kan niet rekenkundig greedy en ungreedy worden. Tenzij je ALTIJD een vaste string hebt, dan is het best wel makkelijk, maar neem aan dat dat neit get geval is?
Offline nick5556 - 28/11/2012 12:22
Avatar van nick5556 PHP beginner Sorry voor de late reactie. Het is inderdaad niet het geval. Over het algemeen is de string redelijk vast(een aantal variabelen), maar in een aantal gevallen moet de berekening toch aangepast worden.

Ik heb hier nog even over nagedacht en is het geen mogelijkheid om te kijken op welke positie het eerste haakje open gaat, daarna te kijken wanneer het eerste haakje dicht gaat ná dat haakje en dan te controleren of er daartussen nog een haakje open gaat. Hieruit alle posities opslaan in een array en van daaruit de string in stukjes hakken waardoor de calculatie gedaan kan worden?
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.208s