Thread: Vergelijking ASP.NET
-
15-02-2010, 15:52 #1
Vergelijking ASP.NET
Hey,
We zijn op school net hiermee begonnen, maar loop een beetje vast nu.
Het is de bedoeling om y = 1 + x + x^2 + ... + x^n te berekenen.
x en n moeten ingegeven worden door de gebruiker. Heb tot nu toe dit:
Mijn bereken knop:
Mijn loopCode:protected void bereken_Click(object sender, EventArgs e) { decimal getal1 = decimal.Parse(waarde1.Text); decimal getal2 = decimal.Parse(waarde2.Text); decimal futureValue = this.CalculateFutureValue(getal1, getal2); lblUitkomst.Text = futureValue.ToString(); }
Mijn futureValue returned iedere keer een 0 in mijn lblUitkomst. Iemand enig idee hoe dit komt?Code:private decimal CalculateFutureValue(decimal getal1,decimal getal2) { decimal futureValue = 0; for (decimal i = 0; i >= getal2; i++) { futureValue += (futureValue + 1) * (getal1 * getal1); } return futureValue; }
Alvast bedankt voor de hulp
no votes
-
-
15-02-2010, 15:55 #2
Enerzijds moet je het wiskundig inzicht hebben om te zien dat je x+x²+x³ kan schrijven als x*(1+x*(1+x))) (zoek eens op de regel van Horner).
Anderzijds moet je weten wat recursie inhoudt en hoe je het toepast.
Dan is dit een relatief simpel probleem.no votes
-
15-02-2010, 16:51 #3Member
- Registered
- 19/02/03
- Location
- Herent
- Posts
- 13,647
- iTrader
- 8 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/17
Je kan het moeilijk maken ja, maar eenvoudig gaat het ook:
Forluske van 0 tot n, en dan elke keer uw tussenresultaat + x^i doen:
Er vanuit gaande dat je iets gemakkelijk tot de n-de macht kan verheffen natuurlijk.Code:int y = 0; //Resultaat int x = 5; //Begin int n = 3; for(int i =0; i < n; i++) { y += x^i; }
edit: Math.Pow kan je gebruiken voor met exponenten te werken, maar vermits het voor school is zal het wel degelijk meer naar Parnakra's richting zijn...Last edited by Mee; 15-02-2010 at 16:57.
no votes
-
15-02-2010, 17:13 #4no votes
-
15-02-2010, 17:31 #5
Hmm, ik krijg al uitkomsten, maar die zitten er telkens precies een paar getallen naast. Volgens mij maak ik nog ergens een denkfout ofzo.
Dit heb ik nu:
Code:private decimal CalculateFutureValue(decimal getal1,decimal getal2) { decimal futureValue = 0; for (decimal i = 0; i < getal2; i++) { futureValue += getal1*(getal1+1); } return futureValue; }no votes
-
15-02-2010, 19:15 #6Member
- Registered
- 21/10/05
- Location
- Herentals
- Posts
- 1,515
- iTrader
- 5 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 2/13
recursion makes my head explode

zonder recursie maar toch ook efficiënt omdat het gebruik maakt van het feit dat x^n = x^(n-1) * x
Code:static decimal CalculateFutureValue(decimal x, int n) { decimal y = 1; // x^0==1 decimal x1 = 1; for (int i = 1; i <= n; i++) { x1 *= x; y += x1; } return y; }"And we wept, Precious. We wept to be so alone." --- Gollum
"Sometimes there are no words. No clever quotes to neatly sum up what happened that day. Sometimes, the day just . . . ends." --- Hotch (Criminal Minds)no votes
-
15-02-2010, 19:29 #7
Dat werkt
Heel erg bedankt!
no votes
-
15-02-2010, 19:42 #8Approved 9liver
- Registered
- 18/01/04
- Location
- Melle
- Posts
- 10,535
- iTrader
- 56 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 27/102
In de veronderstelling dat getal1 je 'x' is. (de methode die parnakra aanreikte).Code:private decimal CalculateFutureValue(decimal getal1,decimal getal2) { decimal futureValue = 0; for (decimal i = 0; i < getal2; i++) futureValue = futureValue*getal1+1; return futureValue; }
Eventueel i <= getal2 gebruiken als getal2 == n is, in het geval dat getal2 je aantal termen aanduidt is alles ok.“In terms of how we evaluate schooling, everything is about working by yourself. If you work with someone else, it’s called cheating. Once you get out in the real world, everything you do involves working with other people.”
PSN: Cycloon - Final Fantasy XIV: A realm reborn characterno votes

