Navigace: Hlavní stránka -> BASIC -> 10 Znaky, texty ->10.11 Rozdíl dvou velkých celých čísel

MENU

10.11 Rozdíl dvou velkých celých čísel

Zadání:
Sestavte program, který odečte dvě celá velká čísla.
Řešení:
Program po zadání dvou celých čísel otestuje pomocí příkazu IF, které z obou čísel je kratší a pomocí cyklu FOR
ho doplní zleva nulami na délku druhého čísla.
V dalším kroku program porovná obě čísla. Pokud je první číslo menší než druhé, obě čísla prohodí a zapamatuje
si znaménko"mínus". Poté program pomocí cyklu FOR prochází obě čísla zprava, převede každý znak na číslo,
odečte tato čísla, odečte od nich přenos, výsledek převede na znak a přidá ho zleva k výsledku. Poté vypočte
přenos do vyššího řádu.
Na konci programu se výsledek vytiskne.
Module Module1

    Sub Main()

        Dim c1, c2, v, pom As String
        Dim i As Integer
        Dim z1, z2, prenos, s As Integer
        Dim znamenko As Char

        Console.Write("Zadejte prvni cislo: ")
        c1 = Console.ReadLine
        Console.Write("Zadejte druhe cislo: ")
        c2 = Console.ReadLine

        If Len(c1) > Len(c2) Then
            For i = 1 To Len(c1) - Len(c2)
                c2 = "0" + c2
            Next i
        Else
            For i = 1 To Len(c2) - Len(c1)
                c1 = "0" + c1
            Next i
        End If

        znamenko = ""

        If c1 < c2 Then
            pom = c1
            c1 = c2
            c2 = pom
            znamenko = "-"
        End If

        prenos = 0
        v = ""

        For i = Len(c1) - 1 To 0 Step -1
            z1 = Asc(c1(i)) - Asc("0")
            z2 = Asc(c2(i)) - Asc("0")
            s = z1 - z2 - prenos
            If s < 0 Then
                s += 10
                prenos = 1
            Else
                prenos = 0
            End If
            v = Chr((s) + Asc("0")) + v
        Next i

        If v(1) = "0" Then
            v = Right(v, Len(v) - 2)
        End If

        v = znamenko + v

        Console.WriteLine("Vysledek: {0}", v)

        Console.ReadLine()

    End Sub

End Module
program ke stažení