Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Sonstige Fragen (http://www.informatikerboard.de/board/board.php?boardid=25)
--- Erneut VBA Aufgabe (http://www.informatikerboard.de/board/thread.php?threadid=981)
Geschrieben von Tamara20 am 24.06.2011 um 23:22:
Erneut VBA Aufgabe
Hallo Leute :-)
Frage:
Schreiben Sie eine Funktion, welche das nte Element der Collatzfolge liefert.Das Anfangselement wird dabei mitgezählt.
Also ich gebe z.b zahl 6 ein und nte zahl 3
6,3,10,5,16,8,4,2,1
dann muss die zahl 10 rauskommen.
Soweit habe ich es.
Public Function nte(ByVal a As Integer, ByVal n As Integer) As Integer
Do Until a = 1
If a Mod 2 = 0 Then
a = a / 2
Else
a = 3 * a + 1
End If
Loop
nte = a
End Function
Hier bekomme ich nun die 1 was bei collatz ja zum schluss rauskommen soll.
Wie und was muss ich hier einbauen?
Ich hatte mal versucht einen leeren string einzugeben und dann mit Mid(s,i,1) die nte stelle rauszubekommen.
Vielen dank schonmal :-)
Geschrieben von Karlito am 25.06.2011 um 08:10:
Tipp: Abbruchbedingung der Schleife.
VG,
Karlito
Geschrieben von Tamara20 am 25.06.2011 um 10:10:
Eine Abbruchsbedingung ist doch Do Wihle oder so? hab ich recht?
und wenn ja soll ich do until wegmachen oder kann man sowas kombinieren.
danke karlito:-)
Geschrieben von Karlito am 25.06.2011 um 12:51:
In deinem Quelltext steht auch eine Abbruchbedingung
| code: |
1:
2:
3:
4:
5:
|
Do Until Abbruchbedingung
Schleifenkörper
Loop
|
|
Du musst dir jetzt nur was einfallen lassen, wie du die Abbruchbedingung so anpasst, dass die Schleife auch stoppt, wenn dein n erreicht ist. Dazu musst du in der Schleife noch was mit dem n machen.
VG,
Karlito
Geschrieben von Tamara20 am 26.06.2011 um 21:10:
Public Function nte(ByVal a As Integer, ByVal n As Integer) As Integer
Do Until a = n
If a Mod 2 = 0 Then
a = a / 2
Else
a = 3 * a + 1
End If
Loop
nte = a
End Function
so habe ich das gemacht aber ich meinte das ist doch total faslch. so macht er ja nur wenn ich für n z.b 2 eingebe so lange geht die collatzschleife.
ich weiss nicht wie ich die funktion für n schreiben muss, das wenn ich collatz 1,5,6,7,9,16 und n 2 eingebe die 5 rauskommt.
die zündende idee fehlt mir ohhhh manooooo
versuch schon seit 1-2 tagen das hinzubekommen :-)
Geschrieben von Karlito am 26.06.2011 um 21:24:
Nicht verzweifeln
Ich möchte dir nur ungern die Lösung verraten, da es dir aus meiner Sicht wenig hilft.
1. Frage: ist es wirklich wichtig, dass die schleife bei a=1 abbricht? Was passiert wenn man sie weiter ausführt.
2. Frage: Wenn du das n-te Glied der Folge berechnen willst, musst du die Bildungsvorschrift n mal ausführen. Wie könntest du das erreichen?
VG,
Karlito
Forensoftware: Burning Board, entwickelt von WoltLab GmbH