PureBasic: Fortgeschrittene Themen-Lösungen

ProzedurenBearbeiten

  1. Eine mögliche Lösung ist:
OpenConsole()
Procedure ausgabe(Array zahlen.l(), mittel.l, laenge.l)
  For k = 0 To laenge - 1
    If zahlen(k) > mittel
      PrintN(Str(zahlen(k)))
    EndIf
  Next
EndProcedure

Dim a(10)
For k = 0 To 9
  a(k) = k
  summe+k
Next
ausgabe(a(), summe/10, 10)

Delay(2000)

Es wird ein Array mit 10 Elementen angelegt und in der For-Schleife mit den Zahlen von 1 bis 10 gefüllt. Gleichzeitig werden diese Zahlen aufaddiert. Dann wird die Prozedur aufgerufen, mit dem Array, dem Mittelwert und der Anzahl der Elemente des Arrays als Argumente. In der Prozedur wird dann das Array durchlaufen und überprüft, ob das aktuelle Element größer ist als der Mittelwert.

  1. Eine mögliche rekursive Lösung lauten:
OpenConsole()

Procedure.l fib(n)
  If n <= 0
    ProcedureReturn 0
  ElseIf n = 1
    ProcedureReturn 1
  Else
    ProcedureReturn fib(n-1) + fib(n-2)
  EndIf
EndProcedure

Print("Welche Stelle soll berechnet werden: ")
n = Val(Input())
PrintN("Das Ergebnis ist "+Str(fib(n)))

Delay(2000)

Wie in der Aufgabe erwähnt lautet die nullte Stelle 0 und die erste 1. Dies stellt die Abbruchbedingung dar. Alle anderen Elemente berechnen sich aus der Summe der beiden vorigen. Dies wird durch die Rekursivität der Prozedur ausgedrückt.