@oventarb

Плохо распознанный (OCR) листинг. Как исправить ошибки?

Нужны рекомендации, чтобы исправить ошибки распознавания в листинге из книги:
DEFINT I-N: DEFSTR S
CLS  : RANDOMIZE 231
DIM s(4, 32) AS STRING * 1
ns = 4
 
ss = "ААААААААААААААААААААААААААААА"
PRINT ss
'-----------ШИФРОВАНИЕ
x = RND(-231)
FOR i=0 TO ns
 FOR j=0 TO 32:set(i,j) = CHR$(j):NEXT
 FOR j=0 TO 32:SWAP s(i,j),s(i,32*RND):
NEXT
NEXT
s=""
FOR i = 1 TO LEN(ss)  'шифрование символа
k=ASC (MID$ (ss ,i ,1)): IF k>32 THEN k=k-128
FOR j = 0 TO ns:k=ASC(set(j,  k)):NEXT
IF k < 32 THEN k = k+  128
PRINT CHR$ (k); : s = s + CHR$ (k)
k = ns * RND 'поворот колес
FOR j=0 TO 31:SWAP s(k,j),s(k,j+1):NEXT
 FOR j=0 TO 32
  s(k,j)=CHR$((ASC(set(k, j)) + 32) MOD 33)
 NEXT
NEXT
PRINT
'----------РАСШИФРОВЫВАНИЕ
x = RND(-231)
FOR i=0 TO ns
FOR j=0 TO 32:s(i,j)=CHR$(j):NEXT
FOR j=0 TO 32:SWAP s(i,j),s(i,32*RND):NEXT
 FOR j=0 TO 32
 IF ASC (set (i, j)) < 64 THEN
 m =j:n=ASC(s(i, j))
DO
k=ASC(s(i,n)):s(i,n)=CHR$(m OR 64)
m=n: n=k
LOOP UNTIL m = j
 END IF
NEXT j
 FOR j=0 TO 32
 s(i,j)=CHR$(ASC(s(i,j))  AND 63)
 NEXT
NEXT i
ss = s
FOR  i = 1 TO LEN(ss)
k=ASC(MID$(ss,i ,1)): IF k>32 THEN k=k-128
 FOR j=ns  TO 0 STEP -1
 k=ASC(s(j,k))
 NEXT
 IF k<32 THEN k=k+128
 PRINT CHR$ (k) ;
 k = ns * RND 'поворот колес
 FOR j = 0 TO 31: SWAP s(k,j),s(k,j+1):NEXT
  FOR j = 0 TO 32
  s(k,j)=CHR$((ASC(s(k,j))+32) MOD  33)
  NEXT
 NEXT i
END
Конкретнее: не совсем понятно, что делять с ошибками "Array access, index expected" и с "Array not dimensioned" в строках с s, ss, set

Сообщения транслятора:
a.bas(11) ERROR 71: Array NOT dimensioned, before '('
 FOR j=0 TO 32:set(i,j) = CHR$(j):NEXT
                   ^
a.bas(15) ERROR 72: Array ACCESS, index expected, before '='
s=""
 ^
a.bas(18) ERROR 71: Array NOT dimensioned, before '('
FOR j = 0 TO ns:k=ASC(set(j,  k)):NEXT
                          ^
a.bas(20) ERROR 72: Array ACCESS, index expected, before '='
PRINT CHR$ (k); : s = s + CHR$ (k)
                    ^
a.bas(24) ERROR 71: Array NOT dimensioned, before '('
  s(k,j)=CHR$((ASC(set(k, j)) + 32) MOD 33)
                       ^
a.bas(34) ERROR 71: Array NOT dimensioned, before '('
 IF ASC (set (i, j)) < 64 THEN
              ^
a.bas(46) ERROR 72: Array ACCESS, index expected
ss = s
     ^
К сожалению, ни исходной книги, ни сканированного варианта нигде нет.
  • Вопрос задан
  • 628 просмотров
Пригласить эксперта
Ответы на вопрос 1
Neuroware
@Neuroware
Программист в свободное от работы время
лучшим решением будет найти исходный скан и посмотреть глазами те строки на которые компилятор матерится, эвристикой тут не обойтись, если даже получится исправить ошибки компиляции не факт что алгоритм будет делать тоже самое что и было задумано
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы