Rechner nach dem Schriftlichen Grundprinzip bringt nullen durcheinander

  • WPF

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von ichduersie.

    Rechner nach dem Schriftlichen Grundprinzip bringt nullen durcheinander

    Hi, ich arbeite an einem Rechner Funktion die es erlaubt extrem hohe Zahlen auszurechnen(Nach dem schriftlichen Prinzip wie man es in der Schule gelernt hatte). Wo man beim PC nur ein Error bekommt, bekommt man bei mir ein Resultat. So weit alles gut. Aber ich hab das Problem das er irgendwie nullen durcheinander wirft. Z.B wenn ich 10+10 rechne bekomme ich nicht 20 sondern 002. Das Problem tritt leider sehr häufig vor und der Code ist somit nicht groß brauchbar. Ich hab mal den Ort markiert(Mit 2 Kommentaren) wo möglicherweise der Fehler könnte sein. Hoffentlich könnt ihr mir helfen.
    LG

    VB.NET-Quellcode

    1. Module Module1
    2. Sub Main()
    3. Console.WriteLine(optplus(Console.ReadLine()))
    4. Main()
    5. End Sub
    6. Function optplus(ByVal num As String)
    7. If num = "clear" Then
    8. Console.Clear()
    9. Console.WriteLine()
    10. Else
    11. Try
    12. Dim numm As Array = Split(num, "+")
    13. Dim result As String = ""
    14. Dim temp As Integer = "0"
    15. Dim temp1 As Integer = "0"
    16. Dim temp2 As Integer = "0"
    17. Dim count As Integer = "0"
    18. Dim ueber As Integer = "0"
    19. For Each var0 As String In numm(0)
    20. For Each var1 As String In numm(1)
    21. If temp2 = count Then
    22. temp1 = var1
    23. End If
    24. temp2 = temp2 + 1
    25. Next
    26. count = count + 1
    27. temp2 = 0
    28. temp = temp1 + var0
    29. temp = temp + ueber
    30. //Mögliche Positions des Fehlers
    31. If temp >= 10 Then
    32. //Hier wird überschlagen, und hier vermute ich den Fehler... Aber finden tue ich den leider nicht ?(
    33. temp1 = Left(temp, 1)
    34. If temp = 10 Then
    35. temp = "0"
    36. Else
    37. temp = Right(temp, 1)
    38. End If
    39. Else
    40. temp1 = 0
    41. temp = Right$(temp, 1)
    42. End If
    43. ueber = temp1
    44. //Ende Fehler Position
    45. result = temp & result
    46. Next
    47. Return ueber & result
    48. Catch ex As Exception
    49. Return "Es wurde kein Ergebniss erzeilt: ERROR"
    50. End Try
    51. End If
    52. End Function
    53. End Module

    gabriel-b schrieb:

    Dim ueber As Integer = "0"
    Vollkommener Schwachsinn. Dass das nicht läuft, ist klar. Schaue dir mal Option Strict an. Das gilt übrigens für alle deiner Variablendeklarationen.

    Und für große Zahlen, nutze am besten die BigInteger.

    LG :)
    Vollzitat entfernt. ~Trade
    Ok, habe ich gemacht. Hab den Code ein wenig "verschönert". Jetzt bekomme ich aber auf Zeile 24 einen Fehler(beim Array). Was muss ich dort anders machen als ich es jetzt habe? Das Problem mit den Nullen bleibt aber immer noch.

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

    Wie wäre es hiermit? msdn.microsoft.com/de-de/library/wak0wfyt.aspx

    Was du da machst ist wieder Mist und sieht danach aus, als hättest du keine Ahnung von der Sprache, da du da leider kein Array erstellt hast.

    Ein Tipp: microsoft-press.de/url.asp?cnt=mspress_vb2010 <- Kostenloses E-Book von Microsoft zur Sprache Visual Basic. Da wird alles behandelt. Von den Grundlagen, die du nicht wirklich zu kennen scheinst, über Datenbanken, WinForms, wirklich alles. Bitte lese dir das durch und lerne daraus. Es sind zwar mehr als 1000 Seiten, aber du musst ja nicht alles behandeln. Wenn dich bspw. Datenbanken nicht interessieren, dann lass die weg. Ist ein riesiger Teil, aber bitte lerne die Grundlagen, bevor du programmierst.

    LG :)