Bewertung Projekt Berechnung elektrischer Widerstand

  • VB.NET
  • .NET (FX) 4.0

Es gibt 104 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Da ich das Tupels bis heute garnicht kannte habe ich das halt mit der Variablen Berchnung Typ Boolean gemacht. In VS-2012/2013 gab es das wohl garnicht.
    Und jetzt habe ich erstmal den Fehler:
    Schweregrad Code Beschreibung Projekt Datei Zeile Unterdrückungszustand Fehler BC37267 Der vordefinierte Typ "ValueTuple(Of ,)" wurde nicht definiert oder importiert.
    Muss nun erstmal guggen was ich da Importieren muss und was man damit machen kann.

    Die Function hatte ich schon auf Privat gesetzt aber ich verstehe nicht was an dem Namen nun so falsch ist??? hmmm

    ""...und das Einheitenvorzeichen. Daher geht der Code kürzer.""
    Wüsste ich im Moment nicht wie ich das kürzen kann....
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:

    VB.NET-Quellcode

    1. Dim Einheitenvorsatz As String
    2. Dim Umrechnungsfaktor As Double = 1
    3. If Multiplikator = 10 ^ -1 OrElse Multiplikator = 10 ^ -2 OrElse Multiplikator = 10 ^ 0 OrElse Multiplikator = 10 ^ 1 Then
    4. ElseIf Multiplikator = 10 ^ 2 OrElse Multiplikator = 10 ^ 3 OrElse Multiplikator = 10 ^ 4 Then
    5. Einheitenvorsatz = "k"
    6. Umrechnungsfaktor = 1000
    7. ElseIf Multiplikator = 10 ^ 5 OrElse Multiplikator = 10 ^ 6 OrElse Multiplikator = 10 ^ 7 Then
    8. Einheitenvorsatz = "M"
    9. Umrechnungsfaktor = 1000000
    10. ElseIf Multiplikator = 10 ^ 8 OrElse Multiplikator = 10 ^ 9 Then
    11. Einheitenvorsatz = "G"
    12. Umrechnungsfaktor = 1000000000
    13. End If
    14. Maßeinheit = " " & Einheitenvorsatz & "Ω"
    15. Widerstand /= Umrechnungsfaktor
    16. Toleranzbeginn /= Umrechnungsfaktor
    17. Toleranzende /= Umrechnungsfaktor
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    OK, da hätte ich drauf kommen können.
    Jetzt habe ich beim testen aber etwas festgestellt. Und zwar:
    Wenn ich mit 4-Ringen arbeite, werden die Werte richtig umgewandelt und ausgegeben.

    Beispiel 4-Ringe: rot - rot - rot (Expo=100) - ergibt 2200 ==> Ausgabe 2,2 kΩ
    Beispiel 5-Ringe:rot - rot - schwarz - braun(Expo=10) - ergibt auch 2200 ==> Ausgabe ist dann aber 2200 Ω

    Also muss ich das ganze noch umändern ....
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:
    Moin moin @VaporiZed
    Also das mit den fhelerhaften Umrechungen bei 4 / 5 Ringen habe ich nun gelöst.

    VB.NET-Quellcode

    1. Dim Einheitenvorsatz As String = "" 'Die " " musste ich noch setzen weil VS gemeckert hatte
    2. Dim Umrechnungsfaktor As Double = 1
    3. If Multiplikator = 10 ^ -1 OrElse Multiplikator = 10 ^ -2 OrElse Multiplikator = 10 ^ 0 OrElse Multiplikator = 10 ^ 1 Then
    4. If AktuelleRingzahl = Ringanzahl.Fünf_Ringe Then
    5. Umrechnungsfaktor = 1000
    6. Einheitenvorsatz = "k."
    7. End If


    Jetzt eine Verständnissfrage.
    Kann man aus einen ENUM 2 Werte auslesen anhand einer Vorgabe?
    Beispiel:

    VB.NET-Quellcode

    1. Friend Enum E24Reihe
    2. Wert18 = 51
    3. Wert19 = 56
    4. Wert20 = 62
    5. Wert21 = 68
    6. End Enum

    Vorgabe wäre 57,55
    Dann sollte aus dem ENUM 56 und 62 ermittelt werden.
    Geht das mit ENUM oder besser ein ListOf oder etwas ganz anderes oder geht das so garnicht?
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:
    Wie kommst Du denn rein logisch von 55,57 auf den Wunschwert 56 und 62? Da erschließt sich mir der Zusammenhang nicht. Geht es darum, dass Du den nächstgrößeren Wert jeweils willst? oder größergleich? Was sind das für E24-Werte? Sind die irgendwo vorgegeben? Und woher kommt der 55/57-Input? Ist der auch irgendwo festgelegt oder kommen diese Zahlen vom User aus ner TextBox/nem NumericUpDown?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @VaporiZed E24 bezeichnet eine Widerstandsreihe, darin ist fest vorgegeben welche Widerstandswerte valide Werte sind. In der E24-Reihe gibt es mitunter den Basiswert 5,1 und auch 5,6 (valide Werte für die Reihe wären dann beispielsweise 510 Ohm oder auch 5,1 kOhm). Wenn bei Amelies Berechnung jetzt ein Widerstandswert von 57 rauskommt, ist das kein valider Widerstand der E24-Reihe. Es gibt also in der echten Welt keinen Widerstand der E24-Reihe mit einem Wert von z.B. 57 Ohm. Ich gehe also davon aus, dass sie über das Enum den nächsten, nicht zwangsläuflig den größeren, validen Wert entsprechend ihrer Berechnung ermitteln will.
    Dumm ist der, der dumm ist. Nicht andersrum!
    Tja, dann muss sie wohl klar ihre Regeln festlegen und mitteilen, wiewannwelcher offizielle Wert verwendet werden soll, wenn die Usereingaben einen bestimmten, ungültigen Wert ergeben.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Hallo @Schmittmuthelm und @VaporiZed

    Im Grunde hat Schmitt es genau erklärt.
    Beispiel: Ich habe eine Schaltung entworfen und darin habe ich einen Widerstand errechnet. Diesen errechneten Werte geben ich nun in meine App ein. Jetzt wirft die App einen Widerstand ( Farbcode und Wert ) heraus und es soll nun eben aus der z.B. E24 Reihe der nächste "zu kaufende" Wert ermittelt werden. Sowohl einer größer und einer kleiner.

    EDIT: 13:02 Könnte das ein Ansatz werden?

    VB.NET-Quellcode

    1. Public Function GetResistor(ByVal NewResistor As Double) As Double
    2. For Each R As E24Reihe In [Enum].GetValues(GetType(E24Reihe))
    3. If ???????? Then Return 0
    4. Next
    5. Return NewResistor
    6. End Function
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Amelie“ ()

    Hab sowas mal in C# gemacht. Das ganze könnte dann so aussehen:

    C#-Quellcode

    1. double[] E24 = new double[] { 1.0, 1.1, 1.2, 1.3, 1.5, 1.6, 1.8, 2.0, 2.2, 2.4, 2.7, 3.0, 3.3, 3.6, 3.9, 4.3, 4.7, 5.1, 5.6, 6.2, 6.8, 7.5, 8.2, 9.1 };
    2. private (double min, double max) GetMinMax(double value)
    3. {
    4. var min = E24.Aggregate((x, y) => x >= y && x <= value ? x : y <= value ? y : x <= y ? x : y);
    5. var max = E24.Aggregate((x, y) => x <= y && x >= value ? x : y >= value ? y : x >= y ? x : y);
    6. return (min, max);
    7. }


    Das nach vb.net zu übersetzen überlass ich dir. (Warum die Ausrede "Das ist aber C#" nicht gilt)
    Dumm ist der, der dumm ist. Nicht andersrum!
    Habe mir nun jetzt erstmal das System.ValueTuple installiert.
    Weis aber noch nicht wie ich das anwenden muss.

    Der c# Codeconverter schmiss nur fehler aus. Naja hab dann das daraus gemacht.

    VB.NET-Quellcode

    1. Friend E24Reihe() As Double = {1.0, 1.1, 1.2, 1.3, 1.5, 1.6, 1.8, 2.0, 2.2, 2.4, 2.7, 3.0, 3.3, 3.6, 3.9, 4.3, 4.7, 5.1, 5.6, 6.2, 6.8, 7.5, 8.2, 9.1}
    2. Friend Function GetMinMax(minmax As Double) As Double
    3. Dim min As Double
    4. Dim max As Double
    5. 'min = E24.Aggregate((min, max) >= min >= max AND x <= value ? x OR max <= value ? max OR min <= max ? min OR max)
    6. 'max = E24.Aggregate((min, max) >= min <= max AND x >= value ? x OR max >= value ? max OR min >= max ? min OR max)
    7. Return (min, max)
    8. End Function


    Hier bekomme ich schon beim Return den Fehler
    Der Wert vom Typ "(min As Double, max As Double)" kann nicht in "Double" konvertiert werden.
    Tja und der Rest... ich sag mal so. mein Hirn brutzelt....

    Ich versuche mal mit For each ... und If else
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Amelie“ ()

    @Amelie Du kannst auch mit dem "normalen" Tuple arbeiten:

    VB.NET-Quellcode

    1. Private E24 As Double() = New Double() {1.0, 1.1, 1.2, 1.3, 1.5, 1.6, 1.8, 2.0, 2.2, 2.4, 2.7, 3.0, 3.3, 3.6, 3.9, 4.3, 4.7, 5.1, 5.6, 6.2, 6.8, 7.5, 8.2, 9.1}
    2. Private Function GetMinMax(ByVal value As Double) As Tuple(Of Double, Double)
    3. Dim min = E24.Aggregate(Function(x, y) If(x >= y AndAlso x <= value, x, If(y <= value, y, If(x <= y, x, y))))
    4. Dim max = E24.Aggregate(Function(x, y) If(x <= y AndAlso x >= value, x, If(y >= value, y, If(x >= y, x, y))))
    5. Return New Tuple(Of Double, Double)(min, max)
    6. End Function
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich muss erstmal genau wissen was das Tuple macht.
    Könnte das mal einer von Euch für mich AA etwas erklären.

    OK Ich kann so einem Return 2 Werte ( können auch 2 Unterschiedliche sein ) zurückgeben lassen...????


    Danke
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:
    @Amelie Ein Tuple ist eine Gruppierung von 2 oder mehreren Typen zu einer Einheit.

    VB.NET-Quellcode

    1. Dim tx = New Tuple(Of Integer, Bitmap, Form)(42, New Bitmap("c:\Temp\Test.png"), Me)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Moin moin

    Ich habe es nun geschafft die Werte entsprechend umzurechen, so dass die Ausgaben wieder zu den Maßeinheiten passen.
    Der Code funktioniert aber NUR wenn ich mit 4-Ringen rechne. Bei Fünf-Ringen verschiebt sich ja der Multiplikator.

    Ich habe die drei Reihen angelegt und damit gerechnet, weil sich die Werte je eigentlich nur wiederholen.
    1.1Ohm , 11Ohm, 110Ohm, 1,1kOhm,...1,1MOhm usw...

    Jetzt erstmal die erste Frage, geht das was ich da nun gemacht habe auch einfacher durch irgendwelche "Tricks" welche IHR kennt?? ;)
    Die zweite wäre dann natürlich wie sähe das bei Fünf-Ringen aus? Das ganze Konstrukt nochmal schreiben?

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Friend E24Reihe_Einer() As Double = {1.0, 1.1, 1.2, 1.3, 1.5, 1.6, 1.8, 2.0, 2.2, 2.4, 2.7, 3.0, 3.3, 3.6, 3.9, 4.3, 4.7, 5.1, 5.6, 6.2, 6.8, 7.5, 8.2, 9.1}
    2. Friend E24Reihe_Zehner() As Double = {10, 11, 12, 13, 15, 16, 18, 20, 22, 24, 27, 30, 33, 36, 39, 43, 47, 51, 56, 62, 68, 75, 82, 91}
    3. Friend E24Reihe_Hunderter() As Double = {100, 110, 120, 130, 150, 160, 180, 200, 220, 240, 270, 300, 330, 360, 390, 430, 470, 510, 560, 620, 680, 750, 820, 910}
    4. Friend Function GetMinMax(ByVal value As Double) As Tuple(Of Double, Double)
    5. If Multiplikator = 10 ^ -2 Then
    6. value = value * 10
    7. Dim min = E24Reihe_Einer.Aggregate(Function(x, y) If(x >= y AndAlso x <= value, x, If(y <= value, y, If(x <= y, x, y))))
    8. Dim max = E24Reihe_Einer.Aggregate(Function(x, y) If(x <= y AndAlso x >= value, x, If(y >= value, y, If(x >= y, x, y))))
    9. Minwert = min / 10
    10. Maxwert = max / 10
    11. End If
    12. If Multiplikator = 10 ^ -1 Then
    13. value = value
    14. Dim min = E24Reihe_Einer.Aggregate(Function(x, y) If(x >= y AndAlso x <= value, x, If(y <= value, y, If(x <= y, x, y))))
    15. Dim max = E24Reihe_Einer.Aggregate(Function(x, y) If(x <= y AndAlso x >= value, x, If(y >= value, y, If(x >= y, x, y))))
    16. Minwert = min
    17. Maxwert = max
    18. End If
    19. If Multiplikator = 10 ^ 0 OrElse Multiplikator = 10 ^ 1 Then
    20. value = value / Multiplikator
    21. Dim min = E24Reihe_Zehner.Aggregate(Function(x, y) If(x >= y AndAlso x <= value, x, If(y <= value, y, If(x <= y, x, y))))
    22. Dim max = E24Reihe_Zehner.Aggregate(Function(x, y) If(x <= y AndAlso x >= value, x, If(y >= value, y, If(x >= y, x, y))))
    23. Minwert = min * Multiplikator
    24. Maxwert = max * Multiplikator
    25. End If
    26. If Multiplikator = 10 ^ 2 Then
    27. value = value * Multiplikator
    28. Dim min = E24Reihe_Hunderter.Aggregate(Function(x, y) If(x >= y AndAlso x <= value, x, If(y <= value, y, If(x <= y, x, y))))
    29. Dim max = E24Reihe_Hunderter.Aggregate(Function(x, y) If(x <= y AndAlso x >= value, x, If(y >= value, y, If(x >= y, x, y))))
    30. Minwert = min / Multiplikator
    31. Maxwert = max / Multiplikator
    32. End If
    33. If Multiplikator = 10 ^ 3 OrElse Multiplikator = 10 ^ 9 OrElse Multiplikator = 10 ^ 6 Then
    34. value = value / 10
    35. Dim min = E24Reihe_Einer.Aggregate(Function(x, y) If(x >= y AndAlso x <= value, x, If(y <= value, y, If(x <= y, x, y))))
    36. Dim max = E24Reihe_Einer.Aggregate(Function(x, y) If(x <= y AndAlso x >= value, x, If(y >= value, y, If(x >= y, x, y))))
    37. Minwert = min * 10
    38. Maxwert = max * 10
    39. End If
    40. If Multiplikator = 10 ^ 4 Then
    41. value = value / 100
    42. Dim min = E24Reihe_Einer.Aggregate(Function(x, y) If(x >= y AndAlso x <= value, x, If(y <= value, y, If(x <= y, x, y))))
    43. Dim max = E24Reihe_Einer.Aggregate(Function(x, y) If(x <= y AndAlso x >= value, x, If(y >= value, y, If(x >= y, x, y))))
    44. Minwert = min * 100
    45. Maxwert = max * 100
    46. End If
    47. If Multiplikator = 10 ^ 5 OrElse Multiplikator = 10 ^ 8 Then
    48. value = value / 1
    49. Dim min = E24Reihe_Einer.Aggregate(Function(x, y) If(x >= y AndAlso x <= value, x, If(y <= value, y, If(x <= y, x, y))))
    50. Dim max = E24Reihe_Einer.Aggregate(Function(x, y) If(x <= y AndAlso x >= value, x, If(y >= value, y, If(x >= y, x, y))))
    51. Minwert = min * 1
    52. Maxwert = max * 1
    53. End If
    54. If Multiplikator = 10 ^ 7 Then
    55. value = value / 1
    56. Dim min = E24Reihe_Hunderter.Aggregate(Function(x, y) If(x >= y AndAlso x <= value, x, If(y <= value, y, If(x <= y, x, y))))
    57. Dim max = E24Reihe_Hunderter.Aggregate(Function(x, y) If(x <= y AndAlso x >= value, x, If(y >= value, y, If(x >= y, x, y))))
    58. Minwert = min * 1
    59. Maxwert = max * 1
    60. End If
    61. Return New Tuple(Of Double, Double)(0, 0)
    62. End Function
    63. ' ==>>Die Ausgabe auf der Form:
    64. Private Sub Get_MinMax_Werte()
    65. Resistor.GetMinMax(Resistor.Widerstand)
    66. lbl_moeglichewerte.Text = Resistor.Minwert.ToString("0.###") & Resistor.Maßeinheit & " und " & Resistor.Maxwert.ToString("0.###") & Resistor.Maßeinheit
    67. End Sub




    @RodFromGermany
    ​Dim tx = New Tuple(Of Integer, Bitmap, Form)(42, New Bitmap("c:\Temp\Test.png"), Me)
    Das schaut aus wie. Äpfel, Fleisch ergibt...???
    Das blicke ich nicht.
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:
    Du liegst gar nicht mal so falsch mit

    Amelie schrieb:

    Das schaut aus wie. Äpfel, Fleisch ergibt
    Es ergibt ein Gesamtpaket aus Integer, Bitmap, Form. Und derjenige (Code), der das "Paket" erhält, kann es auseinanderschnüren und daraus - wenn er will - den Integer, die Bitmap und das Form herausholen.
    Alternativ kannst Du Dir auch eine eigene Datenklasse machen.

    VB.NET-Quellcode

    1. Friend Class DeinDatenpaket
    2. Property Zahl1 As Integer
    3. Property Zahl2 As Double
    4. End Class
    5. '…
    6. Friend Function GibMirZweiZahlen() As DeinDatenpaket
    7. Return New DeinDatenpaket With {.Zahl1 = 2, .Zahl2 = 3.1415927}
    8. End Function
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Amelie schrieb:

    Das blicke ich nicht.
    Das ist eine Gruppierung von Daten, die irgendwie zusammengehören.
    Das war einfach nur als völlig allgemeines Beispiel gedacht.
    Also: völlig unterschiedlich und mehr als einer.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @VaporiZed
    OK, das mit dem Apfel und Fleisch muss ich mir dann naochmal genauer anssehen.
    Zu meinen Fragen bzgl des Code´s gibt es da Ideen?

    EDIT 12:10 Uhr: Konnte das nochmal soweit kürzen.
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Friend Function GetMinMax(ByVal value As Double) As Tuple(Of Double, Double)
    2. If Multiplikator = 10 ^ -2 Then
    3. value = value * 10
    4. Dim min = E24Reihe_Einer.Aggregate(Function(x, y) If(x >= y AndAlso x <= value, x, If(y <= value, y, If(x <= y, x, y))))
    5. Dim max = E24Reihe_Einer.Aggregate(Function(x, y) If(x <= y AndAlso x >= value, x, If(y >= value, y, If(x >= y, x, y))))
    6. Minwert = min / 10
    7. Maxwert = max / 10
    8. End If
    9. If Multiplikator = 10 ^ -1 Then
    10. value = value
    11. Dim min = E24Reihe_Einer.Aggregate(Function(x, y) If(x >= y AndAlso x <= value, x, If(y <= value, y, If(x <= y, x, y))))
    12. Dim max = E24Reihe_Einer.Aggregate(Function(x, y) If(x <= y AndAlso x >= value, x, If(y >= value, y, If(x >= y, x, y))))
    13. Minwert = min
    14. Maxwert = max
    15. End If
    16. If Multiplikator = 10 ^ 0 OrElse Multiplikator = 10 ^ 1 Then
    17. value = value / Multiplikator
    18. Dim min = E24Reihe_Zehner.Aggregate(Function(x, y) If(x >= y AndAlso x <= value, x, If(y <= value, y, If(x <= y, x, y))))
    19. Dim max = E24Reihe_Zehner.Aggregate(Function(x, y) If(x <= y AndAlso x >= value, x, If(y >= value, y, If(x >= y, x, y))))
    20. Minwert = min * Multiplikator
    21. Maxwert = max * Multiplikator
    22. End If
    23. If Multiplikator = 10 ^ 2 OrElse Multiplikator = 10 ^ 5 OrElse Multiplikator = 10 ^ 8 Then
    24. value = value / 1
    25. Dim min = E24Reihe_Einer.Aggregate(Function(x, y) If(x >= y AndAlso x <= value, x, If(y <= value, y, If(x <= y, x, y))))
    26. Dim max = E24Reihe_Einer.Aggregate(Function(x, y) If(x <= y AndAlso x >= value, x, If(y >= value, y, If(x >= y, x, y))))
    27. Minwert = min * 1
    28. Maxwert = max * 1
    29. End If
    30. If Multiplikator = 10 ^ 3 OrElse Multiplikator = 10 ^ 9 OrElse Multiplikator = 10 ^ 6 Then
    31. value = value / 10
    32. Dim min = E24Reihe_Einer.Aggregate(Function(x, y) If(x >= y AndAlso x <= value, x, If(y <= value, y, If(x <= y, x, y))))
    33. Dim max = E24Reihe_Einer.Aggregate(Function(x, y) If(x <= y AndAlso x >= value, x, If(y >= value, y, If(x >= y, x, y))))
    34. Minwert = min * 10
    35. Maxwert = max * 10
    36. End If
    37. If Multiplikator = 10 ^ 4 OrElse Multiplikator = 10 ^ 7 Then
    38. value = value / 100
    39. Dim min = E24Reihe_Einer.Aggregate(Function(x, y) If(x >= y AndAlso x <= value, x, If(y <= value, y, If(x <= y, x, y))))
    40. Dim max = E24Reihe_Einer.Aggregate(Function(x, y) If(x <= y AndAlso x >= value, x, If(y >= value, y, If(x >= y, x, y))))
    41. Minwert = min * 100
    42. Maxwert = max * 100
    43. End If
    44. Return New Tuple(Of Double, Double)(0, 0)
    45. End Function

    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Amelie“ ()

    @Amelie Du rerurnst im Moment stets {0, 0}.
    Meinst Du

    VB.NET-Quellcode

    1. Return New Tuple(Of Double, Double)(0, 0)
    Die Potenzen {10 ^-1} und so würde ich ausrechnen und das Ergerbnis hinschreiben, die permanente Berechnung davon ist etwas schleppend.
    Wenn Du mit ElseIf arbeitest, wird nicht jedes einzelne If getestet, sondern er hört beim richtigen auf.
    Dann bau Dir eine Terstfunktion, etwa so, um sofort grobe Fehler zu erkennen:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Multiplikator = 1
    3. For i = 1 To 10
    4. Debug.WriteLine(GetMinMax(i))
    5. Next
    6. End Sub
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich habe soeben festgestellt, das bei der Widerstandsberechnung mit Fünf-Ringen noch Fehler bei der Umrechnung in die verschiedenen Maßeinheiten auftauchen.
    Nun überlege ich ob es evtl Sinnvoller wäre:
    1.) Die beiden Funktionen zusammen zu legen
    2.) Die ganzen Auswahlmöglichkeiten ggf mit Select Case einfacher zu gestallten

    @RodFromGermany
    Was meinst du hier: ​Du rerurnst im Moment stets {0, 0}.
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:
    Schreibfehler. Das soll heißen Du returnst im Moment stets {0, 0}. = Du gibst in der letzten Zeile immer die beiden Werte 0 und 0 in einem Tupel zurück.
    Sein Vorschlag (den er aber so nicht geschrieben hat!): Return New Tuple(Of Double, Double)(minwert, maxwert)

    ##########

    zu später Stunde noch ein Nachtrag:
    Ich bin mal so dreist und füg das hier noch ein, obwohl total Offtopic: @RodFromGermany: Wenn ich mich nicht total täusche, war Post#81 Dein 50000er. Meinen allerherzlichsten Glückwunsch zum Durchbruch dieser "Schallmauer" und zu Deinem Durchhaltevermögen! :thumbup:
    Ich kann mich noch erinnern, dass Du ein gutes Stück nach meinem Anfang hier im Forum die 40k geknackt hattest. Gar nicht sooo lange her … Mal sehen, ob ich die 100k noch erlebe =O
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „VaporiZed“ ()