VBA While - und Untilschleifen < BASIC < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Hallo zusammen.Ich hab schon alles versucht,bekomme aber diese WI-Hausaufgabe einfach nicht hin
Wann werde ich Halbmillionär (DM - Millionär)?
Kevin Müller möchte wissen, wann er seine erste halbe Million (DM Millionär) haben wird.Dazu schreibt er sich ein kleines VBA - Programm.Er gibt zunächst mit Hilfe von Input-Boxen folgende Parameter ein :
Sein Alter / sein momentanes Gehalt / die geschätzte Steigerung des Gehaltes pro Jahr in Prozent / Die geschätzte Verzinsung seines Sparkapitals in Prozent
Folgende Regeln gelten :
Unter 4000 Euro spart der 20 % seines Gehaltes, ab 4000 Euro 25 %, ab 5000 Euro 30 % . Die Steigerung seines Gehaltes soll alle 12 Monate einmal brücksichtigt werden. Die Verzinsung des Sparkapitals soll vereinfacht am Ende jeden Jahres erfolgen. Das Ergebnis soll in Jahren ausgegeben werden,außerdem das Alter zu diesem Zeitpunkt.
Also, ich habe das jetzt so gemacht :
Sub Millionär ()
Dim Gehalt as Curency
Dim Steigerung As Single
Dim Verzinsung As Single
Dim p As Single
Dim age As Long
Gehalt = InputBox ("Bitte geben sie ihr Gehalt an.", "Gehalt")
Steigerung = InputBoX ( Bitte geben Sie die geschätzte Steigerung des
Gehaltes pro Jahr in Prozent an.", "Steigerung Gehalt")
Verzinsung= inputbox("Bitte geben Sie die geschätzte Verzinsung Ihres Sparkapitals in Prozent an.", "Verzinsung Sparkapital")
age = inputbox("Bitte geben Sie Ihr Alter an.","Alter")
If Gehalt < 4000 Then
p = 20
Else
If Gehalt < 5000
p = 25
Else
p = 30
End if
End if
g = Gehalt
j = 1
Do until g > 500000
j = j + 1
age = age +1
v = g* Steigerung / 100
f = Verzinsung * g* p / 100
g = g + v+ f
Loop
Ende = Msgbox("Halbmillionär nach " & j & "Jahren und im ALter von " & age, 19, "Halbmillionär")
End Sub
Ich weiß nicht , wo mein Fehler liegt, denn als Lösung soll herauskommen:
bei einem Alter von 25 und einem Gehalt von 2500 und einer jährlichen Gehaltssteigerung von 2% und Bankzinsen von 2,5 % soll er nach 35/36 Jahren im Alter von 60 Jahren,Halbmilionär sein.
|
|
|
|
Status: |
(Antwort) fehlerhaft | Datum: | 00:40 Mo 24.10.2005 | Autor: | rostwolf |
Hallo Natascha,
ganz so schnell geht es wohl doch nicht. Nach meiner Rechnung dauert es 94 Jahre, um eine halbe Euromillion angespart zu haben. Nach 36 Jahren hat man gerade mal ca. 44.900 Euro angespart.
Hier meine VBA-Routine:
g = Gehalt ' Anfangsgehalt
suspar = Gehalt / 100 * p ' Sparkapital im 1. Jahr
j = 0
Do Until suspar > 500000
j = j + 1
age = age + 1
sparzins = Verzinsung * suspar / 100 ' Zinsen auf Sparkapital
g = g + g * Steigerung / 100 ' Gehaltssteigerung
Select Case g
Case Is < 4000
p = 20
Case Is < 5000
p = 25
Case Else
p = 30
End Select
suspar = suspar + sparzins + p / 100 * g ' Sparkapital + Neuanlage
Loop
Ende = MsgBox("nach " + Str(j) + " Jahren - im Alter von " + Str(age) + " > 500000"
Ich hab mal eine Gegenrechnung in einer Excel-Tabelle gemacht - ergab dasselbe Ergebnis.
Rechne mal nach!
Gruß Wolfgang.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 06:52 Mo 24.10.2005 | Autor: | parodie17 |
Hallo rostwolf
Viieelen Dank für deine Mühe.Auf dieses Ergebnis bin ich bei vorherigen Versuchen auch gekommen.Vielleicht hat sich unser Lehrer auch vertan.Ich werde ihn nochmal fragen und melde mich dann wieder.Schließlich sollen die anderen, die auch bei dieser Aufgabe hängenbleiben nicht verwirrt werden, wenn das vorgegebene Ergebnis nicht stimmt.
Nochmals vielen Dank
Natascha
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 20:14 Di 25.10.2005 | Autor: | parodie17 |
Hallo rostwolf
Heute hatten wir wieder WI. Wir haben die Lösung von unserem Lehrer erhalten. Er musste sich selbst ganz schön konzentrieren.Ich glaube in der ganzen Klasse hatte niemand die richtige Anrwort.
Daran sieht man ja, dass die Aufgabe ganz schön verzwickt ist.
Also hier die Lösung:
Sub Millionär()
Dim Alter As Byte
Dim Gehalt As Currency
Dim Verzinsung As Single
Alter = InputBox("Alter?", "Alter")
Gehalt = InputBox("Gehalt?", "Gehalt")
Verzinsung = Inputbox("Verzinsung?", "Verzinsung")
Steigerung = InputBox("Steigerung?", "Steigerung")
K = 0
j = 0
Do Until K > 500000
Select Case Gehalt
Case Is < 4000
p = 0,2
Case Is < 5000
p = 0,25
Case Else
p = 0,3
End Select
K = K + 1
j = j + 1
Alter = Alter + 1
SB = Gehalt * 12 * p
Zinsen = (SB + K) * Verzinsung / 100
K = Zinsen + SB + K
Gehalt = Gehalt * Steigerung / 100 + Gehalt
Loop
Ende = MsgBox ("Halbmillionär nach " & j & " Jahren und im Alter von " & Alter & " Jahren.", 16, "Halbmillionär")
ENd Sub
Nochmals vielen Dank für Deine Bemühungen.Ich hoffe, dass ich alles richtig abgetippt habe.
mfg Natascha
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 01:22 Do 27.10.2005 | Autor: | rostwolf |
Hallo Natascha,
ja, dein Lehrer hat recht!
Mein Ansatz war schon gut, doch ich habe einen dämlichen Fehler gemacht:
pro Jahr hatte ich nur ein Gehalt und nicht 12 davon berechnen lassen. Dann geht das doch in diesem Leben...
Gruss von Wolfgang.
|
|
|
|