Jeg bruger VB5 og dér synes ikke at være en funktion, der kan tage tværsum af et tal, jeg kender heller ikke glosen, men "sum of digits" er et bud.
Du kan jo selv lave en funktion - eller skrive koden de steder, hvor den skal anvendes. Jeg har engang set hvorledes man kan gennemløbe en streng tegn for tegn, men jeg har glemt det igen. Så mit forslag er lidt primitivt.
For a = 1 to len(dit_tal) b = b + val(mid(dit_tal, a, 1)) next a
Efter jeg har skrevet svaret, har jeg afprøvet det. Det fungerer kun med tal på indtil 4 cifre. Len returnerer nemlig 4, når stregen består af cifre, selv om den er længere. 4 er antallet af bytes, der repræsenterer variabel-typen 'long'. Dette står i hjælpen til 'Len'. Hvilken VB-version anvender du?
Længden af strengen skal tages af indholdet i tekstfeltet og ikke af variablen dit_tal. Så fungerer det. Om det så kan bruges i dit projekt er en anden sag.
Jeg tror i øvrigt dit_tal med fordel kan ændres til at være en streng-variabel
Dim dit_tal As String Dim a, b As Integer
Private Sub Command1_Click()
dit_tal = Text1.Text b = 0 For a = 1 To Len(Text1.Text) b = b + Val(Mid(dit_tal, a, 1)) Next a
MsgBox ("Tværsum af " & dit_tal & " er " & b) End Sub
Den engelske betegnelse for det danske ord "tværsum" variere lidt afhængig af kilden "sum of the digits", "sum of digits" eller "sideways sum".
Endvidere har roenving ret, idet det at beregne tværsummen af et tal, simpelthen er det samme som at beregne resten ved division med 9 (Hvis man er matematisk interesseret så er det en sjov lille øvelse at bevise dette).
Jeg har nu aldrig set noget som helst programmeringssprog have en funktion til at beregne tværsummen med, og kan ikke se hvorfor VB6 skulle være en undtagelse.
Ok, så er det ikke helt rigtigt at tværsummen er det samme som at beregne "rest modulus 9". Imidlertid er det rigtigt i den forstand at hvis "Tallet Mod 9" er lig med 0, ja så er tværsummen simpelthen 9:
Tvaersum = Tallet Mod 9 If (Tvaersum == 0) Then Tvaersum = 9
Modulus fra en division med giver 0 til rest, når 9 går op i tallet. Men tværsummen kan jo sagtens være højere end 9, hvis tallet er på flere cifre end 2.
Nu må vi se hvad spørgeren skal bruge det til. Hvis det er en checksum i forbindelse med dataoverførsel, er det nok bedre at nøjes med første trin. Men lad #0 komme tilbage og vælge sit svar.
M.v.h. Jørn
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.