помогите найти ошибку
Добавлено: 11 дек 2006, 22:35
Когда я ввожу N от 1 и приблизительно до 150, далее либо прога вылетает, либо вместе с вылетом выдаёт ошибку: "Процессор обнаружил недопустимую инструкцию. CS:5b32 IP:9a4e OP:63 00 00 00 00 Для завершения работы приложения нажмите кнопку "Закрыть""
Скажите плиииз как с этим разобраться
alp=33 записано в константах
Процедура R выполняет чтение строки с номером pos из файла
Procedure Coding(NStr:integer);
var
mas,b_mas,mas1,b_mas1:string[66];
f:text;
str:string; {кодируемая строка}
pos:integer; {номер строки на которой остановились при кодировке}
N,k,i,j:integer;
M:integer; {число смещения}
begin
pos:=0;
writeln('Введите N');
readln(N);
if N<>0 then
begin
mas:='абвгдеёжзийклмнопрстуфхцчшщъыьэюя';
b_mas:='АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ';
M:=N-(N div alp)*alp; {число, на кот. смещаем буквы алфавита}
mas1:=mas;
b_mas1:=b_mas;
for i:=1 to n do
begin
mas1[alp+i]:=mas1;
b_mas1[alp+i]:=b_mas1;
end;
j:=1;
for i:=N to (alp+N) do
begin
mas1[j]:=mas1;
b_mas1[j]:=b_mas1;
inc(j,1);
end;
for i:=1 to NStr do
begin
str:=R(pos);
for j:=1 to length(str) do
begin
if (ord(str[j])>=128) and (ord(str[j])<=159) then
for k:=1 to alp do
if b_mas[k]=str[j] then
str[j]:=b_mas1[k];
if (ord(str[j])>=160) and (ord(str[j])<=175) and (k<>n)
or (ord(str[j])>=224) and (ord(str[j])<=239) and (k<>n) then
for k:=1 to alp do
if mas[k]=str[j] then
str[j]:=mas1[k];
end;
pos:=pos+1;
{$I-}
assign(f,outp);
reset(f);
if IOResult<>0 then
rewrite(f)
else
append(f);
writeln(f,str);
close(f);
{$I+}
end;
end
else
begin
writeln('N=0, текст не будет закодирован');
readln;
end;
end;
Скажите плиииз как с этим разобраться
alp=33 записано в константах
Процедура R выполняет чтение строки с номером pos из файла
Procedure Coding(NStr:integer);
var
mas,b_mas,mas1,b_mas1:string[66];
f:text;
str:string; {кодируемая строка}
pos:integer; {номер строки на которой остановились при кодировке}
N,k,i,j:integer;
M:integer; {число смещения}
begin
pos:=0;
writeln('Введите N');
readln(N);
if N<>0 then
begin
mas:='абвгдеёжзийклмнопрстуфхцчшщъыьэюя';
b_mas:='АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ';
M:=N-(N div alp)*alp; {число, на кот. смещаем буквы алфавита}
mas1:=mas;
b_mas1:=b_mas;
for i:=1 to n do
begin
mas1[alp+i]:=mas1;
b_mas1[alp+i]:=b_mas1;
end;
j:=1;
for i:=N to (alp+N) do
begin
mas1[j]:=mas1;
b_mas1[j]:=b_mas1;
inc(j,1);
end;
for i:=1 to NStr do
begin
str:=R(pos);
for j:=1 to length(str) do
begin
if (ord(str[j])>=128) and (ord(str[j])<=159) then
for k:=1 to alp do
if b_mas[k]=str[j] then
str[j]:=b_mas1[k];
if (ord(str[j])>=160) and (ord(str[j])<=175) and (k<>n)
or (ord(str[j])>=224) and (ord(str[j])<=239) and (k<>n) then
for k:=1 to alp do
if mas[k]=str[j] then
str[j]:=mas1[k];
end;
pos:=pos+1;
{$I-}
assign(f,outp);
reset(f);
if IOResult<>0 then
rewrite(f)
else
append(f);
writeln(f,str);
close(f);
{$I+}
end;
end
else
begin
writeln('N=0, текст не будет закодирован');
readln;
end;
end;