Files
gw-basic-2026/tests/programs/luhn.bas
T

22 lines
584 B
QBasic
Raw Normal View History

10 REM Luhn algorithm - credit card validator - Rosetta Code
20 DATA "49927398716", 1, "49927398717", 0
30 DATA "1234567812345670", 1, "1234567812345678", 0
40 FOR T = 1 TO 4
50 READ CARD$
60 S = 0
70 NDIG = LEN(CARD$)
80 PARITY = NDIG MOD 2
90 FOR I = 1 TO NDIG
100 D = VAL(MID$(CARD$, I, 1))
110 IF ((I-1) MOD 2) <> PARITY THEN 140
120 D = D * 2
130 IF D > 9 THEN D = D - 9
140 S = S + D
150 NEXT I
160 RESULT = 0
170 IF (S MOD 10) = 0 THEN RESULT = 1
180 READ EXPECTED
190 IF RESULT <> EXPECTED THEN PRINT "FAIL: "; CARD$; " sum="; S : END
200 NEXT T
210 PRINT "Luhn OK"