Hallo liebes Forum,
ich mache gerade einen Review über Code, der etwa ein Jahr alt ist. Ich habe ein bestimmtes Bild und wollte daraus das Bildverhältnis bestimmen.
Also
Der Code funktioniert, nur meine Frage ist, ob wir bitte die Funktion zusammen optimieren könnten. Zu der Zeit konnte ich noch nicht so programmieren wie heute. Daher der Post. Es braucht bestimmt keine 100
Falls jemand den Euklidschen Algor. nicht kennt, klickt hier. Eine andere Lösung wäre natürlich auch gut.
Der Aufruf:
Die Funktion:
ich mache gerade einen Review über Code, der etwa ein Jahr alt ist. Ich habe ein bestimmtes Bild und wollte daraus das Bildverhältnis bestimmen.
Also
1280 × 960
gehen in die Function rein und ein String 4:3
wird zurückgegeben.Der Code funktioniert, nur meine Frage ist, ob wir bitte die Funktion zusammen optimieren könnten. Zu der Zeit konnte ich noch nicht so programmieren wie heute. Daher der Post. Es braucht bestimmt keine 100
UInts
...Falls jemand den Euklidschen Algor. nicht kennt, klickt hier. Eine andere Lösung wäre natürlich auch gut.
Der Aufruf:
Die Funktion:
VB.NET-Quellcode
- Function GgT(ByVal Zaehler As UInteger, ByVal Nenner As UInteger) As String 'Euklid'scher Algorithmus (naja..)
- Dim a As UInteger = Zaehler
- Dim b(99) As UInteger
- b(1) = Nenner
- Dim _Rest(99) As UInteger '100 Werte
- For XYZ As Integer = 0 To 99
- _Rest(XYZ) = 10
- Next
- Dim Ausgabe As String
- Dim Verhaeltnis_Teil1 As UInteger
- Dim Verhaeltnis_Teil2 As UInteger
- Dim i As Integer = 1
- If i = 1 Then
- _Rest(1) = a Mod b(1)
- End If
- i += 1
- While i <= 99
- _Rest(i) = b(i - 1) Mod _Rest(i - 1)
- If (_Rest(i) = 0) Then
- Exit While
- End If
- If i > 1 Then 'immer (außer beim ersten Mal) b neu zuweisen
- b(i) = _Rest(i - 1)
- End If
- i += 1
- End While
- b(i) = _Rest(i - 1) 'b noch einmal zuweisen
- If i = 99 Then 'nur für den Fall, dass er zu lange braucht
- Return ""
- End If
- Verhaeltnis_Teil1 = CUInt(Zaehler / b(i))
- Verhaeltnis_Teil2 = CUInt(Nenner / b(i))
- Ausgabe = If(Verhaeltnis_Teil1 = 7 And Verhaeltnis_Teil2 = 3,
- "2,333 : 1 (Kino)",
- Verhaeltnis_Teil1.ToString + ":" + Verhaeltnis_Teil2.ToString)
- Return Ausgabe
An die Neulinge: Nutzt
Option Strict On
und Option Infer Off
. Dadurch kommt ihr mit Datentypumwandlungen nicht durcheinander und der Code verbessert sich um Einiges! Solche Fehler à la Dim Beispiel As Integer = "123" können nicht mehr passieren.