Ganzzahligen Teil einer Zahl zurückgeben

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Ganzzahligen Teil einer Zahl zurückgeben

    Guten Abend,
    Ich arbeite gerade an einer Aufgabe aus der Schule. Ich habe jetzt mein erstes Halbjahr Informatik und wir programmieren mit Visual Basic 2010. Dies ist die Aufgabe:
    Schreibe folgendes Programm: Es soll die Koordinaten der Maus im Bereich der PaintBox ausgeben und so viele Zeilen, bzw. Spalten zeichnen, wie in den TextBoxen eingegeben.

    Das war erstmal kein Problem für mich, also bin ich so weit gekommen:

    VB.NET-Quellcode

    1. #Region "Variablen"
    2. Dim Spalten As Integer
    3. Dim Zeilen As Integer
    4. Dim H1 As Integer
    5. Dim H2 As Integer
    6. Dim B1 As Integer
    7. Dim B2 As Integer
    8. Dim Start As Boolean = False
    9. #End Region
    10. #Region "Raster"
    11. Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
    12. Dim z As Graphics = e.Graphics
    13. Dim stift As New Pen(Color.Black, 2)
    14. For Y = 1 To Zeilen
    15. z.DrawLine(stift, 0, Y * H2, PictureBox1.Width, Y * H2)
    16. Next
    17. For X = 1 To Spalten
    18. z.DrawLine(stift, X * B2, 0, X * B2, PictureBox1.Height)
    19. Next
    20. End Sub
    21. #End Region
    22. #Region "Erzeugung starten"
    23. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    24. If IsNumeric(TextBox1.Text) And IsNumeric(TextBox2.Text) Then
    25. Spalten = TextBox2.Text
    26. Zeilen = TextBox1.Text
    27. H1 = PictureBox1.Height
    28. B1 = PictureBox1.Width
    29. H2 = PictureBox1.Height / Zeilen
    30. B2 = PictureBox1.Width / Spalten
    31. Start = True
    32. PictureBox1.Invalidate()
    33. End If
    34. End Sub
    35. #End Region
    36. #Region "Position des Zeigers"
    37. Private Sub PictureBox1_MouseMove(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseMove
    38. If Start = True Then
    39. Label3.Text = e.Y / (H1 / Zeilen) + 1
    40. Label4.Text = e.X / (B1 / Spalten) + 1
    41. End If
    42. End Sub
    43. #End Region


    Es ist soweit fertig, jedoch gibt er mir im Label (in der die Position der Maus angezeigt werden soll) nur eine Kommazahl mit mehreren Nachkommastellen an. Ich versuchte es schon mit CInt, aber da es aufrundet bringt mir das auch nichts. Also brauche ich irgendeinen Befehl, welcher mir den ganzzahligen Teil der Position angibt. Mir ist es nicht geglückt eine Lösung im Internet zu finden.

    Vielen Dank schon einmal im vor raus.

    Liebe Grüße
    TastyBoba

    ( Wahrscheinlich ist die Lösung super einfach und ich komme wegen mangelnder Erfahrung einfach nicht drauf.)

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

    @TastyBoba Probierma Option Strict On und dann Integer-Division: \ statt /

    VB.NET-Quellcode

    1. H2 = PictureBox1.Height \ Zeilen
    2. B2 = PictureBox1.Width \ Spalten
    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!

    TastyBoba schrieb:

    Ich arbeite gerade an einer Aufgabe aus der Schule.
    Jo, mal wieder die leidige Lehre.
    Wenn du coden lernen willst, mach dir klar, dass euer Schulunterricht unter aller Sau ist.
    Folgende Dinge hätten gleich inne ersten Stunde geklärt werden müssen:
    • Option Strict On
    • Abschaltung des GeneralImports Microsoft.VisualBasic
    • sprechende Benamung von Controls und Variablen
    Aufgrund dieser gravierenden grundlegenden Mankos bin ich mal so frei, euerm Lehrer mangelnde Kompetenz zu bescheinigen.
    Wie gesagt: Wenn Informatik dich wirklich interessiert, lerne es irgendwo anners als in deiner Schule.