GGT + kgV - Referenz or Value
#1
I post it here.
Inspired by the GGT thread (Euclid): https://staging.qb64phoenix.com/showthre...706&page=2
I wrote a small program for GGT and kgV.

I had serious problems with passing variables to functions: by reference or by value.
I have now solved it like this - it doesn't seem to work without a dummy.


Code: (Select All)
'https://www.lernhelfer.de/schuelerlexikon/mathematik/artikel/euklidischer-algorithmus
'Groester gemeinsamer Teiler und kleintes gemeinsames Vielfaches
'GGT und kgV nach Euklid - 4. August 2022

Option _Explicit

Declare Function ggt(zahl1, zahl2 as Long) as Long
Declare Function kgV(zahl1, zahl2, ggtErgebnis as Long) as Long

Dim zahl1, zahl2 As Long
Dim d1, d2 As Long

Print
Print "Berechnet den GGT und das kgV nach Euklid"
Print
Input "Geben Sie die erste Zahl ein : ", zahl1
Input "Geben Sie die zweite Zahl ein: ", zahl2

'd1/2 = dummy - Zuweisung als Wert (Value)
'Sonst wird per Referenz auf zahl1/2 zugegriffen,
'und natuerlich ihr veraenderter Wert uebergeben
d1 = (zahl1)
d2 = (zahl2)

Print: Print
Print Using "Der gemeinsame Teiler von ### und ### ist: ###"; zahl1, zahl2, ggt(zahl1, zahl2)

Print: Print
'Nur mit den dummies funktioniert es
Print Using "Das kleinste gemeinsame Vielfache von ### und ### ist: ###,###"; d1, d2, kgV(d1, d2, ggt(zahl1, zahl2))

End 'Hauptprogramm

Function ggt (zahl1, zahl2 As Long)

  Dim temp As Long

  While (zahl1 > 0)
    If (zahl1 < zahl2) Then
      temp = zahl1: zahl1 = zahl2: zahl2 = temp
    End If
    zahl1 = zahl1 - zahl2
  Wend
  ggt = zahl2

End Function

Function kgV (zahl1, zahl2, ggtErgebnis As Long)

  Dim ergebnis As Long

  ergebnis = ((zahl1 * zahl2) / ggtErgebnis)
  kgV = ergebnis

End Function
Reply


Messages In This Thread
GGT + kgV - Referenz or Value - by Kernelpanic - 08-04-2022, 08:56 PM
RE: GGT + kgV - Referenz or Value - by mnrvovrfc - 12-10-2022, 12:35 PM



Users browsing this thread: 2 Guest(s)