import random
n=9
bombi_nuzhno = 7
bombi = 0
a = [[0 for i in range(n)] for j in range(n)]
#распределение бомб
while bombi < bombi_nuzhno:
i = random.randint(0,6)
j = random.randint(0,6)
if a[i][j]!="*":
a[i][j] = '*'
bombi += 1
for i in range(len(a)-2):
for j in range(len(a[i])-2):
print(a[i][j], end =' ')
print()
#цифры
z=a
for i in range(len(z)):
for j in range (len(z[i])):
if z[i][j]==0 and z[i+1][j]=="*":
z[i][j]+=1
if z[i][j]==0 and z[i-1][j]=="*":
z[i][j]+=1
if z[i][j]==0 and z[i][j+1]=="*":
z[i][j]+=1
if z[i][j]==0 and z[i+1][j-1]=="*":
z[i][j]+=1
if z[i][j]==0 and z[i+1][j+1]=="*":
z[i][j]+=1
if z[i][j]==0 and z[i-1][j-1]=="*":
z[i][j]+=1
if z[i][j]==0 and z[i-1][j+1]=="*":
z[i][j]+=1
Это код, который должен выводить поле 7 на 7. сначала расставляются бомбы, а затем цифры как в сапере. Требуется исправить ошибку выхода из массива
(это питон)
function preobr(s:string):string;var i,j,p,n,sered:integer; gl,zp,slovo:string; m:array [1..80] of string;beginzp:='!?*,.'; gl:='аоуыэяеёюи'; p:=pos(' ',s); i:=0; repeat inc(i); slovo:=copy(s,1,p-1); m[i]:=slovo; delete(s,1,p); p:=pos(' ',s); until p=0; n:=i+1; m[n]:=s; for i:=1 to n do begin s:=m[i]; if pos(s[length(s)],zp)<>0 then p:=length(s)-1 else p:=length(s); sered:=(p div 2)+1; if (not odd(p)) or (p<3) then continue; if pos(s[1],gl)=0 then continue; if pos(s[sered],gl)=0 then continue; if pos(s[p],gl)=0 then continue; s[1]:=UpCase(s[1]); s[sered]:=UpCase(s[sered]); s[p]:=UpCase(s[p]); m[i]:=s+'('+s[1]+','+s[sered]+','+s[p]+')'; end; s:=''; for i:=1 to n do s:=s+m[i]+' '; preobr:=s;end;
beginassign(f,'input.txt'); reset(f);assign(t,'output.txt'); rewrite(t); while not eof(f) do begin readln(f,s); writeln(t, preobr(s) ); end; writeln('Файл успешно записан...'); close(f);close(t);readln;end.
{
if (tnum < tden)
{
temp = tnum;
tnum = tden;
tden = temp;
}
tnum = tnum - tden;
}
gcd = tden; //вычисляем наибольший общий делитель
numerator = numerator / gcd; //делим числитель и знаменатель на
НОД, получаем сокращенную дробь
denominator = denominator / gcd;