VBS Fakultät?
Guten Tag,
ich habe eine VBS-Datei, die die Fakultät einer Zahl berechnen und diese dann in einer MsgBox ausgeben soll.
Momentan habe ich das:
---
dim i
i = InputBox("Bitte geben sie eine Zahl ein", "Fakultaet")
Do while i = 1
i = i(i - 1)
loop
MsgBox "Die Fakultät deiner Zahl ist: " & i , 0, "Fakultaet"
---
Allerdings zeigt mit die MsgBox das alte i an und nicht das neue.
Was kann man tun, damit die Fakultät von i angezeigt wird?
Ich weiß, dass VBS sich dafür eher weniger eignet, aber aus diversen Gründen muss es VBS sein.
Für hilfreiche Antworten wäre ich sehr dankbar. =)
3 Antworten
Du musst das i ja in jedem Schleifendurchlauf um 1 reduzieren. Und dein Ergebnis solltest du irgendwie anders nennen. Und ich denke, die while-Bedingung ist falsch herum, es sollte while i >1 sein, bei i=1 sollte die Schleife abbrechen.
Ich kennen VBS nicht, aber vorausgesetzt deine Syntax stimmt, irgendwie so:
dim i
i = InputBox("Bitte geben sie eine Zahl ein", "Fakultaet")
dim fak
fak = 1
Do while i > 1
fak = fak*i
i=i-1
loop
MsgBox "Die Fakultät deiner Zahl ist: " & fak , 0, "Fakultaet"
Das hätt ich nicht erwartet! Kann ich jetzt in mein CV schreiben, dass ich VBS kenne? :D
Gute Lösungen hast du bereits. In der Schleifenvariante kommst du nicht um eine weitere Variable umher. Mit einer zählst du bis zur Obergrenze oder von der Obergrenze bis nach eins herunter. In der anderen merkst du dir die Zwischenergebnisse der Fakultät.
Merkregel: Lieber eine Variable zu viel als zu wenig verwenden.
Um noch produktiv etwas zu ergänzen, zeige ich dir den rekursiven Ansatz.
' Berechnet die Fakultät rekursiv
Function FakultaetRek(ByVal n)
FakultaetRek = n
if n > 2 then _
FakultaetRek = FakultaetRek * FakultaetRek(n-1)
End Function
Und nochmal meine Lösung ohne Rekursion:
' Berechnet die nte Fakultät
Function Fakultaet(ByVal n)
Dim i
Fakultaet = 1
For i=2 To n
Fakultaet = Fakultaet * i
Next
End Function
Versuchs mal so:
dim i,n,f
n = InputBox("Bitte geben sie eine Zahl ein", "Fakultaet")
f = 1
for i = 1 to n
f = f * i
next
MsgBox "Die Fakultät deiner Zahl ist: " & f , 0, "Fakultaet"
Könntest du vielleicht mal so grob den Code von oben verändern?
Wäre dir sehr dankbar.
Inzwischen scheitere ich daran, das Ergebnis anders zu nennen.