' cod e` la codifica "segreta" dei numeri del codice ASCII ' car$ e` un carattere battuto e n.asc e` il suo numero in codice ASCII ' car.new$ e` la sua codifica segreta e n.asc.new e` il suo numero in codice ASCII ' -> Matematica e Calcolatore, sch.8, es.7 PRINT DIM cod(4, 255) d(0) = 3: d(1) = 7: d(2) = 1: d(3) = 27: d(4) = 13 FOR j = 0 TO 4: FOR i = 0 TO 255 IF i < 32 OR i > 122 THEN ' non modifichiamo i caratteri "strani" cod(j, i) = i ' ma solo lettere e segni di interpunzione ELSE cod(j, i) = i + d(j) IF cod(j, i) > 122 THEN cod(j, i) = cod(j, i) - 122 + 31 END IF NEXT: NEXT id = 0 10 INPUT "1: codifica, 2: decodifica"; cosa SELECT CASE cosa CASE 1 LINE INPUT "messaggio: ", a$ PRINT "codifica: "; id = 0 FOR i = 1 TO LEN(a$) IF id > 4 THEN id = 0 car$ = MID$(a$, i, 1): n.asc = ASC(car$): n.asc.new = cod(id, n.asc) car.new$ = CHR$(n.asc.new): PRINT car.new$; : id = id + 1 NEXT PRINT CASE 2 LINE INPUT "codifica: ", a$ PRINT "messaggio: "; id = 0 FOR i = 1 TO LEN(a$) IF id > 4 THEN id = 0 car$ = MID$(a$, i, 1): n.asc = ASC(car$) FOR n.asc.new = 0 TO 255: IF n.asc = cod(id, n.asc.new) THEN EXIT FOR NEXT car.new$ = CHR$(n.asc.new): PRINT car.new$; : id = id + 1 NEXT PRINT CASE ELSE END SELECT GOTO 10