Variable : Werte einzeln addieren *Gelöst*

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von VB.Ghost.

    Variable : Werte einzeln addieren *Gelöst*

    Hallo, ich habe hier 2 Variablen, mit folgendem Beispielinhalt:

    Variable1 = 13242014231021
    Variable2 = 34021342010210

    Jetzt soll er die beiden addieren, aber nicht " 13242014231021 " + " 34021342010210 " = " 47263356241231 ", sondern er soll jede einzelne Zahl addieren, und das nicht als eine Zahl sehen. *Ich weiß, hat keiner Verstanden, deswegen hier ein Beispiel*:


    Variable1 = 13242014231021
    Variable2 = 34021342010210
    -----------47263356241231


    So also: 1 +3 = 4 ; 3 + 4 = 7 ; 2 + 0 = 2 ; 4 + 2 = 6 ; ... Usw.. Die Ergebniswerte werden 9 nicht überschreiten, daher wäre ein möglicher Übertrag kein Problem.

    Gibt es eine Möglichkeit, dies so zu machen ?

    MfG. VB.Ghost

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VB.Ghost“ ()

    Damit geht es 1000%ig! (Ergebnis ist die Variable Result)

    VB.NET-Quellcode

    1. Dim Variable1 As Long = 13242014231021
    2. Dim Variable2 As Long = 34021342010210
    3. Dim _Result As Long = 0
    4. Dim Result As Long = 0
    5. Dim counter As Integer = 0
    6. Do While counter <> Variable1.ToString.Length
    7. _Result = CLng(Val(Variable1.ToString.Chars(counter))) + CLng(Val(Variable2.ToString.Chars(counter))) 'Zwischenergebnis speichern
    8. Result &= _Result 'Zwischenergebnis ins Endergebnis übertragen
    9. counter += 1
    10. Loop
    11. MsgBox(CStr(Result))


    EDIT: Ne falsch! Moment...

    Jetzt funzt der Code richtig!

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

    Ich bekomme bei

    VB.NET-Quellcode

    1. Dim zahlen2 As Integer = TextBox2.Text


    den Fehler "Die arithmetische Operation hat einen Überlauf verursacht.". Dabei besteht Textbox2.text aus etwa 30 Nullen und Einsen... Aber das ist warscheinlich schon zuviel... Mit Long gibt es ähnliche Fehler :(

    Womit kann ich also etwa 1000 Nullen und Einsen speichern ? Am besten mehr... .


    MfG. VB.Ghost

    VB.NET-Quellcode

    1. a=1
    2. do while a=10
    So würde er schon einmal garnicht anfangen, mit deiner Schleife :D Aber mit do while a<=10 mag das funktionieren.

    Meinst du das funktioniert mit modulo ? Ich habe da so meine Bedenken... 8|


    MfG. VB.Ghost
    Aber wenn das mod in

    VB.NET-Quellcode

    1. variable=variable mod 10


    modulo heißen soll, wie kommst du da eigendlich drauf ?


    Noch jemand eine Idee :?:


    MfG. VB.Ghost

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „VB.Ghost“ ()

    also ich denke ich hab das bisschen falsch verstanden

    ich dachte du willst die summe ALLER zahlen aber dann hab ich gesehn dass das erg nich über 9 sein wird und du immer nur 2 zahlen addierst
    also das mod 10 gibt mir die letzte stelle von der zahl... also wenn du 54321 hast also:
    zahl=54321 'ausserhalb der schleife machen sonst beginnt er beim ergebnis also bei 1 und das fürht zu blödsinn
    zahl=zahl mod 10 'nun ist die zahl 1 und wenn es die schleife öfter durch läuft dann ist es 2 und so weiter...


    also ich würds so machen
    i=1
    a=1
    do
    i=i+1
    a=a+1
    variable(i)=variable mod 10
    loop until a=10 'statt der 10 eben die anzahl der stellen von der zahl
    erg=variable(1)+variable(2)
    erg2=variable(3)+variable(4)

    so ähnlich würde ich das machen... vll is da eine laufvariable zuviel aber egal... das letze hätte ich irgendwie in eine schleife gepackt bin aber zu müde dafür

    und wie ich auf mod komme? das sind grundlagen die lernen wir in der schule

    VB.NET-Quellcode

    1. Private Sub btnCalc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCalc.Click
    2. If txtZahlA.Text.Length <> 0 And txtZahlB.Text.Length <> 0 Then
    3. Dim sb As New StringBuilder
    4. Dim strA As String = txtZahlA.Text
    5. Dim strB As String = txtZahlB.Text
    6. Dim strErg As String = String.Empty
    7. Dim uebertrag As Integer = 0
    8. Dim ZwSum As Integer = 0, a As Integer, b As Integer
    9. ' Beide Strings auf gleiche Länge bringen
    10. If txtZahlA.Text.Length > txtZahlB.Text.Length Then
    11. sb.Append(strB)
    12. sb.Insert(0, "0", txtZahlA.Text.Length - txtZahlB.Text.Length)
    13. strB = sb.ToString
    14. ElseIf txtZahlB.Text.Length > txtZahlA.Text.Length Then
    15. sb.Append(strA)
    16. sb.Insert(0, "0", txtZahlB.Text.Length - txtZahlA.Text.Length)
    17. strA = sb.ToString
    18. End If
    19. sb = New StringBuilder
    20. For i As Integer = strB.Length - 1 To 0 Step -1
    21. Try
    22. a = CInt(strA(i).ToString)
    23. b = CInt(strB(i).ToString)
    24. Catch ex As Exception
    25. MsgBox("Ungültige Eingabe!")
    26. Exit Sub
    27. End Try
    28. ZwSum = a + b + uebertrag
    29. If ZwSum > 10 Then
    30. uebertrag = ZwSum \ 10
    31. ZwSum = ZwSum Mod 10
    32. Else
    33. uebertrag = 0
    34. End If
    35. sb.Insert(0, ZwSum.ToString, 1)
    36. Next
    37. If uebertrag <> 0 Then sb.Insert(0, uebertrag.ToString, 1)
    38. txtErgebnis.Text = sb.ToString
    39. End If
    40. End Sub