Код потрібно писати використовуючи тегі [CОDE][/CОDE] (тут навмисне замінив англійське O на українське), це збереже форматування.
Мабуть програма не працює?
Якщо так то є підозри можливо проблеми з цим:
Код:
ly:=1;
repeat {poshuk maksymalnoi vysoty masyvu}
ly:=1; // здається тут потрібно lx (2 рядками вище вже є ly:=1)
Ось код програми з деякими коментарями (українською мовою, щоб можна було відрізнити від оригінальних, при компілюванні їх потрібно стерти):
Код:
program proekt_10A;
uses crt,graph;
var a:array[1..70,1..20] of byte;
c,s,q,x,y,lx,ly:integer;
function square(x,y,lx,ly:integer):integer;
{перевіряє підмасив на наявність "0", якщо знайдений
фунція приймає значення 0, якщо ні - 1,
крім того даний підмасив "підсвічується"}
var i,j,s:integer;
c:char;
begin
s:=0;
textcolor(2);
for i:=x to x+lx do
for j:=y to y+ly do
if a[i,j]=0 then s:=1;
if s=0 then
for i:=x to x+lx do
for j:=y to y+ly do
begin
gotoxy(i,j);
write(a[i,j]);
end;
if s=0 then square:=1
else square:=0;
end;
begin
textcolor(15); // задається колір тексту
clrscr; // очищається екран
randomize; {встановлюється модуль випадкових велечин
(не знаю як краще описати)}
{zapovnennja masyva nyljamy ta odunutsjamy}
for y:=1 to 20 do
for x:=1 to 70 do
{генерується випадковий масив 20x70 з "0" та "1"}
begin
c:=random(40);
if c=39 then a[x,y]:=0 else a[x,y]:=1;
{ймовірність що конкретний елемент масиву буде "0" - 2,5%}
end;
{vuvid masyvu na ekran}
{дійсно виводиться на екран згенерована матриця}
for y:=1 to 20 do
for x:=1 to 70 do
begin
gotoxy(x,y);
write(a[x,y]);
end;
s:=1400; // "площа" масива 20x70 = 1400
q:=0; {pochynajemo z macyvu masymalno mozlyvoi ploshchi}
repeat
{шукається підмасив розміром lx на ly який не містить "0"}
gotoxy(40,22); //не розумію чому саме 40, 22
write(' ');
gotoxy(40,22);
write(s);
ly:=1;
repeat {poshuk maksymalnoi vysoty masyvu}
ly:=1; // здається тут потрібно lx (2 рядками вище вже є ly:=1)
repeat {poshuk maksymalnoi shyryny masyvu}
if lx*ly=s then {ploshcha prjamokutnyka}
begin
y:=1; {perebyrajemo vsi mozlyvi koordynaty Y u livoji vershyny}
repeat
x:=1; {perebyrajemo vsi mozlyvi koordynaty X u livoi vershyny}
repeat
q:=square(x, y, lx,ly); {perevirjajemo prjamokutnyk na
najavnist nuliv}
x:=x+1;
if (x+lx>70) then x:=70;
until (q=1)or(x=70); {zavershujem jakshcho znajdeno
prjamokutnyk abo dosjahnuto kintsja prjamokutnyka po horyzontali}
y:= y+1;
if y+ly>20 then y:=20;
until (q=1)or(y=20); {zavershujem jakshcho znajdeno prjamokutnyk
abo dosjahnuto kintsja prjamokutnyka po vertykali}
end;
lx:=lx+1;
until (q=1)or(lx=70); {zavershujem jakshcho znajdeno prjamokutnyk
abo velychyna shyryny dosjagla maksymymy}
ly:=ly+1;
until (q=1)or(ly=20); {zavershujem jakshcho znajdeno prjamokutnyk
abo velychyna vysoty dosjagla maksymymy}
s:=s-1;
until (s=1)or(q=1); {zavershujem jakshcho znajdeno prjamokutnyk abo
velychyna ploshchi dosjagla odynytsi}
end.
Якщо вище написане не допомогло, то спробую вдома прокомпілювати цю програму.