Ga naar inhoud

Aanbevolen berichten

Geplaatst:

Mijn opgave is: Laat de gebruiker zijn beginkapitaal en een intrestpercentage ingeven. Laat het programma voor elk jaar afdrukken wat zijn nieuwe kapitaal is. Het programma mag pas stoppen wanneer de kapitaalverhoging 20% bedraagt.

Ik weet niet goed hoe ik verder moet, dit is wat ik al heb:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim sngprocent As Single

Dim sngkapitaal1 As Single

Dim sngkapitaal2 As Single

Dim struitkomst As String

Dim bytteller As Byte

sngprocent = TextBox1.Text

sngkapitaal1 = TextBox2.Text

Do Until sngkapitaal2 < sngkapitaal1 * 1.2

sngkapitaal2 = sngprocent * sngkapitaal1

bytteller = 1

struitkomst = sngkapitaal2

TextBox3.Text = struitkomst & vbCrLf

Loop

End Sub

Verder kom ik niet, kan iemand me helpen? Alvast bedankt :D:pcguru:

Geplaatst:

Ik ken niks van Visual Basic Express.

struitkomst = sngkapitaal2 ---dat kan ik begrijpen.

Moet je niks doen met bytteller = 1

Want byteller doet je niks mee.

Moet het niet zo zijn struitkomst = sngkapitaal2 + byteller

Daarbij zie ik niks hoe je procent berekend.

Volgens mij moet je ook AsInteger gebruiken

Geplaatst:
Ik ken niks van Visual Basic Express.

struitkomst = sngkapitaal2 ---dat kan ik begrijpen.

Moet je niks doen met bytteller = 1

Want byteller doet je niks mee.

Moet het niet zo zijn struitkomst = sngkapitaal2 + byteller

Daarbij zie ik niks hoe je procent berekend.

Volgens mij moet je ook AsInteger gebruiken

Bytteller moet mijn regelteller voorstellen maar die gebruikt ik waarschijnlijk helemaal verkeerd :S De procent hoeft niet berekent te worden, ik doe ineens kapitaal1 * procent (Wordt in textbox opgegeven als 1,$$)

Waar bedoelt u een integer?

Geplaatst:

Bijvoorbeeld:

Procent 5

Kapitaal = 100

U zegt 5 x 100 = 500

Dus ben je al voorbij DoUntil

Ik zou eerder denken aan:

((100 / 100)*5) + 100 = 105

Of

(100 * (5/100)) + 100 = 105

Ben even gaan kijken en met single kan je ook grote getallen opgeven.

Daarom dacht ik dat je integer moet gebruiken.

Eerst logisch denken.

Hoe werk ik met datum want u moet per jaar afdrukken.

Hoe moet ik procent berekenen.

Wat is het uiteindelijk doel ervan.

Als ik een beetje logisch kan denken wat u schrijft zo dit zo ongeveer moeten zijn.

Elk jaar komt er intresten bij de kapitaal.

Maar op einde van elk jaar is er ook aflossingen dus vermindert kapitaal + intresten - aflossingen.

Nieuwe jaar is nieuw kapitaal

enz.

Geplaatst:

is een simpel excel-tabelletje niet veel eenvoudiger en meer begrijpbaar ?

dat is op minder dan een kwartiertje opgesteld

Geplaatst:

Lukt het?

Is Visual Basic Express groot programma?

Ik weet wel dat je die programma gratis kan downloaden.

Dan zal ik eens proberen hoe je dat kan oplossen want ik ken wel Visual Basic maar bij Visual Basic Express moet ik anders programmeren.

Als die programma niet te groot is dan zal ik die downloaden.

Geplaatst:

Je kan beter naar deze forum gaan:

Index :: VBiB/ACCB.net :: Visual Basic in België | .net Ineta User Group

Het zal iets in deze zin zijn:

sngprocent = TextBox1.Text

sngbeginkapitaal = TextBox2.Text

sngmaand = sngprocent / 12

sngBegindatum = date()

sngBeginmaand = mounth()

sngloopkapitaal = ((sngbeginkapitaal / 100) * sngmaand) + sngbeginkapitaal

sngBeginmaand = sngloopkapitaal

DoUntil sngloopkapitaal < sngbeginkapitaal * 1.2

Loop

Geplaatst:

PrivateSub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim sngprocent AsSingle
Dim sngkapitaal1 AsSingle
Dim sngkapitaal2 AsSingle
Dim struitkomst AsString
Dim bytteller AsByte
sngprocent = TextBox1.Text
sngkapitaal1 = TextBox2.Text
DoUntil sngkapitaal2 < sngkapitaal1 * 1.2
sngkapitaal2 = sngprocent * sngkapitaal1
bytteller = 1
struitkomst = sngkapitaal2
TextBox3.Text = struitkomst & vbCrLf
Loop
EndSub

Er zitten enkele denkfoutjes in je procedure :-)

fout 1.

sngkapitaal2 is het kapitaal na bijvoegen van de intrest en zal de bij de start altijd kleiner zijn dan sngkapitaal1 * 1.2 De conditie van jou DoUntil zal dus reeds bij de eerste controle vervuld zijn en de loop zal niet worden uitgevoerd.

oplossing: gebruik > ipv < bij je DoUntil of gebruik een DoWhile ipv DoUntil.

fout 2.

Bij elke loop ga je dezelfde berekening doen nl:

sngkapitaal2 = sngprocent * sngkapitaal1

Bij de eerste passage in de loop klopt dit wel maar bij de volgende passages in de loop moet je de intrest berekenen op sngkapitaal2 ipv op sngkapitaal1.

oplossing: een variabele sngkapitaal3 definieren om je intrestberekening mee te doen. Voor je in de loop gaat stel je sngkapitaal3 = sngkapitaal1.

In de loop krijg je dan het volgende

sngkapitaal2 = sngprocent * sngkapitaal3

sngkapitaal3 = sngkapitaal2

fout 3.

Je stelt je bytteller gelijk aan 1 binnen de loop. Die bytteller zal dus altijd 1 blijven en je kan er dus niks mee aanvangen. Ik vermoed dat het de bedoeling is om deze teller te gebruiken om de jaren aan te geven?

oplossing: bytteller buiten de loop initialiseren op 0 en binnen de loop telkens met 1 verhogen.

fout 4.

De tekst van textbox3 zal ook nooit veranderen want je zet die bij elke passage in de loop weer op dezelfde waarde.

oplossing: de tekst die reeds in de textbox staat meenemen naar de volgende loop.

Na verbetering van de fouten zou het er als volgt kunnen uitzien:

PrivateSub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  Dim sngprocent AsSingle
  Dim sngkapitaal1 AsSingle
  Dim sngkapitaal2 AsSingle
  [b]dim sngkapitaal3 assingle[/b]
  Dim struitkomst AsString
  Dim bytteller AsByte
  sngprocent = TextBox1.Text
  sngkapitaal1 = TextBox2.Text
  [b]sngkapitaal3 = sngkapitaal1[/b]
   [b]bytteller = 0[/b]
   [b]DoUntil sngkapitaal2 > sngkapitaal1 * 1.2[/b]
      sngkapitaal2 = sngprocent * [b]sngkapitaal3[/b]
      [b]bytteller = bytteller + 1[/b]
      struitkomst = [b]"Kapitaal na " & bytteller & "jaar is " & sngkapitaal2[/b]
      TextBox3.Text = [b]textbox3.text & struitkomst & vbCrLf[/b]
  Loop
EndSub

×
×
  • Nieuwe aanmaken...

Belangrijke informatie

We hebben cookies geplaatst op je toestel om deze website voor jou beter te kunnen maken. Je kunt de cookie instellingen aanpassen, anders gaan we er van uit dat het goed is om verder te gaan.