Data Update
This commit is contained in:
parent
e50b5c3114
commit
633b36288a
206 changed files with 4762 additions and 965 deletions
44
Task/Canonicalize-CIDR/QBasic/canonicalize-cidr.basic
Normal file
44
Task/Canonicalize-CIDR/QBasic/canonicalize-cidr.basic
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
CLS
|
||||
DIM IP(3)
|
||||
DO
|
||||
REM Read DEMO Data
|
||||
140 READ CI$
|
||||
IF CI$ = "" THEN EXIT DO 'Sleep: End
|
||||
REM FIND /
|
||||
SL = 0
|
||||
FOR I = LEN(CI$) TO 1 STEP -1
|
||||
IF MID$(CI$, I, 1) = "/" THEN SL = I: I = 1
|
||||
NEXT I
|
||||
IF SL = 0 THEN PRINT "INVALID CIDR STRING: '"; CI$; "'": GOTO 140
|
||||
NW = VAL(MID$(CI$, SL + 1))
|
||||
IF NW < 1 OR NW > 32 THEN PRINT "INVALID NETWORK WIDTH:"; NW: GOTO 140
|
||||
REM PARSE OCTETS INTO IP ARRAY
|
||||
BY = 0: N = 0
|
||||
FOR I = 1 TO SL - 1
|
||||
C$ = MID$(CI$, I, 1): IF C$ <> "." THEN 300
|
||||
IP(N) = BY: N = N + 1: BY = 0: IF IP(N - 1) < 256 THEN 310
|
||||
290 PRINT "INVALID OCTET VALUE:"; IP(N - 1): GOTO 140
|
||||
300 C = VAL(C$): IF C OR (C$ = "0") THEN BY = BY * 10 + C
|
||||
310 '
|
||||
NEXT I
|
||||
IP(N) = BY: N = N + 1: IF IP(N - 1) > 255 THEN 290
|
||||
REM NUMBER OF COMPLETE OCTETS IN NETWORK PART
|
||||
NB = INT(NW / 8)
|
||||
REM NUMBER OF NETWORK BITS IN PARTIAL OCTET
|
||||
XB = NW AND 7
|
||||
REM ZERO Out HOST BITS IN PARTIAL OCTET
|
||||
IP(NB) = IP(NB) AND (255 - 2 ^ (8 - XB) + 1)
|
||||
REM And SET Any ALL-HOST OCTETS To 0
|
||||
IF NB < 3 THEN FOR I = NB + 1 TO 3: IP(I) = 0: NEXT I
|
||||
REM Print Out THE RESULT
|
||||
PRINT MID$(STR$(IP(0)), 2);
|
||||
FOR I = 1 TO 3
|
||||
PRINT "."; MID$(STR$(IP(I)), 2);
|
||||
NEXT I
|
||||
PRINT MID$(CI$, SL)
|
||||
LOOP
|
||||
DATA 87.70.141.1/22, 36.18.154.103/12, 62.62.197.11/29
|
||||
DATA 67.137.119.181/4, 161.214.74.21/24, 184.232.176.184/18
|
||||
REM SOME INVALID INPUTS
|
||||
DATA 127.0.0.1, 123.45.67.89/0, 98.76.54.32/100, 123.456.789.0/12
|
||||
DATA
|
||||
Loading…
Add table
Add a link
Reference in a new issue