Ein einfaches Programm - mit Fehlern?

  • VB.NET

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

    Leeres Konsolenfenster

    Hallo,

    ich mache gerade meine ersten Schritte in VB.NET und habe ein kleines Programm geschrieben. Es öffnet sich auch ein Konsolenfenster - allerdings bleibt es leer.

    Was habe ich falsch gemacht bzw. was könnte man verbessern?

    Danke für Hinweise.

    Quellcode

    1. Imports System.Console
    2. Module Module1
    3. Sub Main()
    4. Dim rd As Integer
    5. Dim un As Integer
    6. Dim ob As Integer
    7. Dim oob As Integer
    8. Dim oun As Integer
    9. rd = 40
    10. un = 6
    11. ob = 7
    12. oob = ob
    13. oun = un
    14. While ob - un > 0.01
    15. Dim mi As Integer
    16. mi = (un + ob) / 2
    17. If ((mi * mi) > rd) Then
    18. ob = mi
    19. Else
    20. un = mi
    21. End If
    22. End While
    23. WriteLine("---Eingabe:---")
    24. WriteLine("")
    25. WriteLine("Radikand: {0}", rd)
    26. WriteLine("Unterer Näherungswert: {0}", oun)
    27. WriteLine("Oberer Näherungswert: {0}", oob)
    28. WriteLine("")
    29. WriteLine("")
    30. WriteLine("---Ausgabe:---")
    31. WriteLine("")
    32. WriteLine("Unterer Näherungswert: {0}", un)
    33. WriteLine("Oberer Näherungswert: {0}", ob)
    34. ReadLine()
    35. End Sub
    36. End Module

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

    titel: ok, hätte gleich daran denken sollen (es war 23h... ;)). Leider können ja nur die mods titel ändern...

    zum thema endlosschleife... Liegt das an der notlösung zum quadrieren von mi (mi*mi)? Wie heißt denn die Funktion zum quadrieren einer zahl?

    //edit: wäre nett, wenn ein moderator den threadtitel in 'Leeres Konsolenfenster' ändern würde. Danke.

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

    Hi!

    x*x = x²
    Daran kanns auf keinen Fall liegen...
    Ich meinte, dass egal wie oft die schleife durchgearbeitet wird (ob - un > 0.01) = true ist und somit die schleife nie beendet wird.
    Sieht zumindest sehr dannach aus. Setz mal nen Breakpoint am anfang der while-schleife und schau, wie der programmablauf aussieht.
    Es lag an

    Quellcode

    1. Dim rd As Integer
    2. Dim un As Integer
    3. Dim ob As Integer
    4. Dim oob As Integer
    5. Dim oun As Integer
    6. Dim mi As Integer

    Es muss heißen

    Quellcode

    1. Dim rd As Integer
    2. Dim un As Double
    3. Dim ob As Double
    4. Dim oob As Integer
    5. Dim oun As Integer
    6. Dim mi As Double


    Außerdem habe ich "erfahren", dass man mit math.pow(mi, 2) eine Zahl mit 2 potenziert und dass math.sqrt(rd) die Wurzel zieht (war mir von php schon bekannt, nur nicht eingefallen)..

    Na ja, bin eben noch Anfänger... ;)

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