Vieleckberechnung

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Schalke.

    Vieleckberechnung

    Hi Leute,

    bin neu hier und finde mich grad so ein wenig in VB 2010 ein.

    Hab da ne (für mich) interessante udn schwierige Ausgabe gefunden.

    Es geht darum aus einer txt Datei Koordinaten auszulesen, des klappt 1a.

    Danach soll damit eine Berechnung erfolgen.

    Quellcode

    1. For j = 1 To NZ
    2. T1 = reader.ReadLine
    3. Teil = T1.Split(";")
    4. NS = Teil.Count
    5. For i = 1 To NS
    6. x1(j, i) = Convert.ToSingle(Teil(i - 1))
    7. x1(j, i) = Math.Round(x1(j, i), 3)
    8. Next
    9. ListBox1.Items.Add(j & ".Koordinate: (" & x1(j, 1) & "/" & x1(j, 2) & ")")
    10. Next
    11. ListBox1.Items.Add("")
    12. For j = 1 To NZ = 1
    13. ListBox1.Items.Add(j & ".Teilergebnis: " & ((x1(j, 2) + x1(j + 1, 2)) * (x1(j, 1) - x1(j + 1, 1))) / 2 & "cm³")
    14. Next
    15. For j = NZ To NZ
    16. ListBox1.Items.Add(j & ".Teilergebnis: " & ((x1(j, 2) + x1(j - (NZ - 1), 2)) * (x1(j, 1) - x1(j - (NZ - 1), 1))) / 2 & "cm³")
    17. Next


    Diese Berechnung sollte den Flächeninhalt Berechnen.

    Jedoch hab ich iwo einen Fehelr drin und mir wird immer nur der letzte Wert berechnet.

    Ich hoffe jemand kann mir helfen.

    LG Schalke

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

    @Schalke Auch von mir ein Willkommen im Forum. :thumbup:
    Am besten, wir fangen noch mal ganz von vorn an.
    Sollen erst alle Einzelkoordinaten angezeigt werden oder soll zu jedem gelesenen Datensatz sdas kommunizierende Ergebnis angezeigt werden?
    Wie genau sieht der Inhalt der Koordinaten-Datei aus?
    1. Einlesen der Koordinaten, konvertieren in Double, nicht aber Single, weil Sinus und Co mit Double rechnet.
    2. Ggf. Abspeichern der Werte in einer geeigneten Datenstruktur, die sich nach den vorliegenden Daten richtet.
    3. Berechnung der Fläche, Ergebnis ist wieder ein Double-Wert.
    4. Anzeigen dessen, was angezeigt werden soll.
    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 würde vorschlagen, zunächstmal das Problem zu isolieren (noch ohne es wirklich zu lösen).
    Das geschieht ganz einfach durch eine autarke Methode, die genau das tut, was du in post#1 anfragst: Aus einer Liste von Punkten einen Wert berechnen.
    Die Methode muss also folgende "Signatur" haben:

    VB.NET-Quellcode

    1. Function GetArea(points As List(Of Point)) As Double
    2. dim result As Double
    3. 'hier der Code, der mit den points iwas rechnet
    4. Return result
    5. End Function
    Wenn ich mich recht erinnere, ergibt sich die Fläche in einem Polygon als Summe der VektorProdukte jedes Punktes mit seinem Vorgänger.
    Oder nach welcher Regel willst du die Fläche ausrechnen?
    danke danke leute,

    kam aber grad selber drauf :

    Quellcode

    1. For j = 1 To NZ = 1


    Wenn ich für NZ = 1 Wähle rechnet das Programm nur jeweisl vom letzten Wert das Ergebnis aus.

    Es müsste korrekt : NZ - 1 sein.

    Somit Berechne ich mit der 1. Schleife die Werte von 1-10 und mit der 2. Schleife Wert 10-1 .

    Somit ist das Vieleck dann geschlossen.

    Danke :)