NAVIGATIE

Freetime overzicht
Zoeken


  RUBRIEKEN

FAQ / Help
Wat mag niet?
WZL Wedstrijden
WZL Chat
WZL Toolbar
WZL Statistieken
WZL leden
WZL shop
E-cards

RSS

Fun-feed
Babe-feed
Stud-feed

Een groot aantal pokerrooms geven de mogelijkheid om poker te spelen op internet en geld te storten via het veilige iDeal betaalsysteem.
Overzicht » Computer » Programmeren » Wiskundige functie controleren in java
Onderaan pagina
dannyboy 3.329
wzl-lid
Sinds 31/5/2005
T: 108 R: 883
24/5/2007 - 15:08u | Quote
De vraag gaat niet echt over programeren, maar het heeft er mee te maken. Daarom zet ik em hier.

Ik maak een programma dat een ingegeven wiskundige functie (bv: f(x) = x^2/(3*x-5^(x/2)) controleert.
Ik lees dus een string in via een textveld en controleer of het een correcte functie is.
Ik doe dit in 4 controles:
1) Is er iets ingevuld?: deze controle is gewoon om te kijken of er iets in het textveld staat.

2) Zijn er alleen correcte characters gebruikt?: hier controleer ik elk character van de string of het 1 van de volgende characters is: 0 1 2 3 4 5 6 7 8 9 x ( ) * / + - ^

3) Zijn er evenveel geopende als gesloten haakjes en staan deze in de juiste volgorde?: Hier ga ik elk teken 1 voor 1 af en kijk of het een '(' is of een ')' is. Ik tel het aantal '(' in een variabele en het aantal ')' in een ander variabele. Telkens als ik een teken heb gehad kijk ik of het aantal ')' niet groter is als het aantal '('. Nadat ik alle tekens heb gehad kijk of het aantal '(' evenveel is als het aantal ')'.

4) Wordt elk character door een correct character gevolgd?: Ik ga elk character af en kijk of het character dat erna komt correct is:
0 kan gevolgd worden door: 0 1 2 3 4 5 6 7 8 9 * / + - ^ )
1 kan gevolgd worden door: 0 1 2 3 4 5 6 7 8 9 * / + - ^ )
2 kan gevolgd worden door: 0 1 2 3 4 5 6 7 8 9 * / + - ^ )
3 kan gevolgd worden door: 0 1 2 3 4 5 6 7 8 9 * / + - ^ )
4 kan gevolgd worden door: 0 1 2 3 4 5 6 7 8 9 * / + - ^ )
5 kan gevolgd worden door: 0 1 2 3 4 5 6 7 8 9 * / + - ^ )
6 kan gevolgd worden door: 0 1 2 3 4 5 6 7 8 9 * / + - ^ )
7 kan gevolgd worden door: 0 1 2 3 4 5 6 7 8 9 * / + - ^ )
8 kan gevolgd worden door: 0 1 2 3 4 5 6 7 8 9 * / + - ^ )
9 kan gevolgd worden door: 0 1 2 3 4 5 6 7 8 9 * / + - ^ )
x kan gevolgd worden door: * / + - ^ )
( kan gevolgd worden door: 0 1 2 3 4 5 6 7 8 9 - x
) kan gevolgd worden door: * / + - ^
* kan gevolgd worden door: 0 1 2 3 4 5 6 7 8 9 x (
/ kan gevolgd worden door: 0 1 2 3 4 5 6 7 8 9 x (
+ kan gevolgd worden door: 0 1 2 3 4 5 6 7 8 9 x (
- kan gevolgd worden door: 0 1 2 3 4 5 6 7 8 9 x (
^ kan gevolgd worden door: 0 1 2 3 4 5 6 7 8 9 x (

het eerste character kan zijn: 0 1 2 3 4 5 6 7 8 9 x (


Mijn vraag is nu of jullie nog foute wiskundige functies kunnen bedenken die door deze controles komen.

Alvast bedankt

Ps: sorry voor de lange tekst
Einstein
[mod] Kayniaan
Sinds 24/6/2004
T:84 - R:2433
24/5/2007 - 21:49u | Quote
-5^(1/2) e.d. of mogen imaginaire getallen en /0
dannyboy 3.329
wzl-lid
Sinds 31/5/2005
T:108 - R:883
24/5/2007 - 23:08u | Quote
Einstein schreef:
-5^(1/2) e.d. of mogen imaginaire getallen en /0

voor de /0 ben ik ook al een oplossing aannt zoeken. maar ik denk dat ik gewoon de exception ga opvangen als ik de functie met een test x-waarde ga uitvoeren. Ik denk dat ik de -5^(1/2) ook op die manieer kan opvangen.

Laatst aangepast door dannyboy op 24/05/2007 23:12:06u (2x aangepast)
D3ton8oR
Stella-man
Sinds 15/10/2003
T:32 - R:1581
25/5/2007 - 10:08u | Quote
logaritmische functies?
integralen?
dannyboy 3.329
wzl-lid
Sinds 31/5/2005
T:108 - R:883
25/5/2007 - 12:06u | Quote
D3ton8oR schreef:
logaritmische functies?
integralen?

ik begin simpel, het programma dient om nulpunten te benaderen met numerieke methoden. Ik wil eerst beginnen dat em een simpele functie herkent, en dan eventueel verdergaan op log, sin, cos, tan, cotan, ln, e, pi,...
Zubzub 2.604
wzl-lid
Sinds 30/7/2005
T:2 - R:176
26/5/2007 - 19:56u | Quote
ipv de input te controlleren kunde mss ook gewoon nen try catch bij de uitvoering van de formule zette. als de formule niet kan worde uitgevoerd een foutmelding aan de gebruiker voor correcte input te vragen. Op die manier hoef je geen 1001 input controles in te bouwen en maar 1 uitvoeringscontrole, en zit je veel flexibeler qua complexere formules. maar ik neem dat de vraag niet was...
Fry 2.667
wzl-lid
Sinds 1/2/2006
T:2 - R:36
28/5/2007 - 21:48u | Quote
Zubzub schreef:
ipv de input te controlleren kunde mss ook gewoon nen try catch bij de uitvoering van de formule zette. als de formule niet kan worde uitgevoerd een foutmelding aan de gebruiker voor correcte input te vragen. Op die manier hoef je geen 1001 input controles in te bouwen en maar 1 uitvoeringscontrole, en zit je veel flexibeler qua complexere formules. maar ik neem dat de vraag niet was...


Dat is nogal een slechte programmeergewoonte. Achteraf is het dan heel moeilijk om je code zelf nog correct te lezen, het kan heel onverwachte resultaten geven en je kan geen deftige foutboodschap naar de gebruiker toe geven.

Ontopic: Hou je er rekening mee dat (123(123)) geen correcte invoer is?
GrimBlasPhemy 3.564
wzl-lid
Sinds 1/11/2004
T:0 - R:29
29/5/2007 - 14:56u | Quote
Fry schreef:
Ontopic: Hou je er rekening mee dat (123(123)) geen correcte invoer is?


3 kan gevolgd worden door: 0 1 2 3 4 5 6 7 8 9 * / + - ^ )


Laatst aangepast door GrimBlasPhemy op 29/05/2007 14:57:21u (1x aangepast)
0r10n 3.202
wzl-lid
Sinds 25/10/2004
T:3 - R:6
30/5/2007 - 20:00u | Quote
tip: zoekt ne keer op hoe da ge reguliere expressies moet opstellen.
Ik denk (bijna zeker) dat java standaard een methode heeft om een string te testen voor een bepaalde reguliere expressie.
Wordt standaard veel gebruikt bij validatie van invoervelden.
Want als ge da ga programmeren gelijk of da ge t neergeschreven hebt, zal t nie echt gemakkelijk te lezen zijn.
Losealot
Beachboy
Sinds 24/9/2004
T:55 - R:1358
4/6/2007 - 10:12u | Quote
puntje 3 kan efficienter met maar 1 var..
bij ( -> aantal++ bij ) -> aantal-- verder mag aantal niet onder 0 gaan.
hierdoor spaar je een int uit wat 32 bit of 4 byte is!

ok, ik geef toe, het is een minimale verbetering, maar uiteindelijk zal het wel iets uitmaken
Losealot
Beachboy
Sinds 24/9/2004
T:55 - R:1358
4/6/2007 - 10:14u | Quote
voor puntje 4 zou je bv http://www.singularsys.com/jep/ kunnen gebruiken
Keneo 3.453
wzl-lid
Sinds 19/10/2004
T:7 - R:409
5/6/2007 - 12:13u | Quote
haakjes kunnen redelijk eenvoudig (en makelijk uitbreidbaar naar andere soorten haakjes) gecontrolleerd worden met een stack

plaats bij open haakje het haakje op de stack, bij sluiten haakje haal je het erweer van (bij verschillende soorten haakjes ("()","[]" of "{}" controlleer je of het haakje op de stack overeenkomt. (zoniet, fout)

als bij het overloven van de functie een sluitend haakje gevonden wordt en de stak is leeg heb je een fout
als na het overlopen van de functie de stack niet leeg is heb je een fout

opmerking
-75x^3+2x komt niet door jouw test?
(beginnend simboolis een min)
mja, oplossing 0-xxx, maar toch niet zo maklijk

1/(x-x) etc...

Laatst aangepast door Keneo op 5/06/2007 12:15:09u (1x aangepast)
Goldie 3
wzl-lid
Sinds 7/4/2006
T:0 - R:1
19/6/2007 - 13:06u | Quote
0r10n schreef:
tip: zoekt ne keer op hoe da ge reguliere expressies moet opstellen.
Ik denk (bijna zeker) dat java standaard een methode heeft om een string te testen voor een bepaalde reguliere expressie.
Wordt standaard veel gebruikt bij validatie van invoervelden.
Want als ge da ga programmeren gelijk of da ge t neergeschreven hebt, zal t nie echt gemakkelijk te lezen zijn.

ik zou ook regexen, en het is ni eens moeilijk, gewoon uwe input in ne string steken en dan

input.matches( "regexwaaraandenestmoetvoldoen" ) ;

natuurlijk, om wikundige uitdrukkinge te controlere gaat da wel ne redelijk ingewikkelde regex worde wss...

Laatst aangepast door Goldie op 19/06/2007 13:07:52u (1x aangepast)
Zubzub 2.604
wzl-lid
Sinds 30/7/2005
T:2 - R:176
23/6/2007 - 18:13u | Quote
Fry schreef:
Zubzub schreef:
ipv de input te controlleren kunde mss ook gewoon nen try catch bij de uitvoering van de formule zette. als de formule niet kan worde uitgevoerd een foutmelding aan de gebruiker voor correcte input te vragen. Op die manier hoef je geen 1001 input controles in te bouwen en maar 1 uitvoeringscontrole, en zit je veel flexibeler qua complexere formules. maar ik neem dat de vraag niet was...


Dat is nogal een slechte programmeergewoonte. Achteraf is het dan heel moeilijk om je code zelf nog correct te lezen, het kan heel onverwachte resultaten geven en je kan geen deftige foutboodschap naar de gebruiker toe geven.

Ontopic: Hou je er rekening mee dat (123(123)) geen correcte invoer is?


try catch is juist een heel goede programmeer gewoonte! het maakt je programma juist robuster en makkelijker om te lezen en leidt tot perfect te verwachten resultaten + je kan er veel gedetailleerdere foutboodschappen naar de gebruiker toe geven!

Laatst aangepast door Zubzub op 23/06/2007 19:53:15u (1x aangepast)
GrimBlasPhemy 3.564
wzl-lid
Sinds 1/11/2004
T:0 - R:29
19/7/2007 - 19:43u | Quote
Zubzub schreef:
Fry schreef:
Zubzub schreef:
ipv de input te controlleren kunde mss ook gewoon nen try catch bij de uitvoering van de formule zette. als de formule niet kan worde uitgevoerd een foutmelding aan de gebruiker voor correcte input te vragen. Op die manier hoef je geen 1001 input controles in te bouwen en maar 1 uitvoeringscontrole, en zit je veel flexibeler qua complexere formules. maar ik neem dat de vraag niet was...


Dat is nogal een slechte programmeergewoonte. Achteraf is het dan heel moeilijk om je code zelf nog correct te lezen, het kan heel onverwachte resultaten geven en je kan geen deftige foutboodschap naar de gebruiker toe geven.

Ontopic: Hou je er rekening mee dat (123(123)) geen correcte invoer is?


try catch is juist een heel goede programmeer gewoonte! het maakt je programma juist robuster en makkelijker om te lezen en leidt tot perfect te verwachten resultaten + je kan er veel gedetailleerdere foutboodschappen naar de gebruiker toe geven!


try catch is idd een goede gewoonte, maar niet op de manier zoals je het beschreef.
Omdat je te lui bent om checks te bouwen error trapping gaan gebruiken?

try catch is om fouten op te vangen die programmatorisch niet kunnen vermeden worden
filenotfoundexception bvb of wanneer de database er uit ligt...
Dit zijn dingen die niet kunnen vermeden worden, dat gebeurt gewoon soms.
DAAR gebruik je try catch voor, en dan heb je gelijk dat het een heel goede programmeer gewoonte is
Zubzub 2.604
wzl-lid
Sinds 30/7/2005
T:2 - R:176
22/7/2007 - 22:16u | Quote
GrimBlasPhemy schreef:
Zubzub schreef:
Fry schreef:
Zubzub schreef:
ipv de input te controlleren kunde mss ook gewoon nen try catch bij de uitvoering van de formule zette. als de formule niet kan worde uitgevoerd een foutmelding aan de gebruiker voor correcte input te vragen. Op die manier hoef je geen 1001 input controles in te bouwen en maar 1 uitvoeringscontrole, en zit je veel flexibeler qua complexere formules. maar ik neem dat de vraag niet was...


Dat is nogal een slechte programmeergewoonte. Achteraf is het dan heel moeilijk om je code zelf nog correct te lezen, het kan heel onverwachte resultaten geven en je kan geen deftige foutboodschap naar de gebruiker toe geven.

Ontopic: Hou je er rekening mee dat (123(123)) geen correcte invoer is?


try catch is juist een heel goede programmeer gewoonte! het maakt je programma juist robuster en makkelijker om te lezen en leidt tot perfect te verwachten resultaten + je kan er veel gedetailleerdere foutboodschappen naar de gebruiker toe geven!


try catch is idd een goede gewoonte, maar niet op de manier zoals je het beschreef.
Omdat je te lui bent om checks te bouwen error trapping gaan gebruiken?

try catch is om fouten op te vangen die programmatorisch niet kunnen vermeden worden
filenotfoundexception bvb of wanneer de database er uit ligt...
Dit zijn dingen die niet kunnen vermeden worden, dat gebeurt gewoon soms.
DAAR gebruik je try catch voor, en dan heb je gelijk dat het een heel goede programmeer gewoonte is


mja hier op hogent moesten we voor input van users te controllere (bvb geen cijfers en geen NULL) try catch gebruiken. Dermee da het mij handig leek om zelf een exception te schrijve die kan worden gecatch als de wiskunde user input niet kan worden herleid tot een logisch wiskundig resultaat ipv 1001 controles in te bouwen. voor de rest geef ik je natuurlijk helemaal gelijk
 
Bovenaan pagina