Страница 1 из 1
Помогите сделать задачу с двумерными массивами.
Добавлено: 20 ноя 2012, 19:21
santalix
Задать двумерный массив размерности N x N (N-нечетное)
Найти: произведение элементов выделенной области и максимальный из них.
Re: Помогите сделать задачу с двумерными массивами.
Добавлено: 24 ноя 2012, 02:19
dr.Jekill
Как выделяется область?
Re: Помогите сделать задачу с двумерными массивами.
Добавлено: 24 ноя 2012, 11:21
santalix
Да вот сам не знаю...
Re: Помогите сделать задачу с двумерными массивами.
Добавлено: 24 ноя 2012, 12:34
dr.Jekill
Если предположить, что задаются индексы верхнего-левого и нижнего-правого элементов, то:
Код: Выделить всё
uses crt;
const
maxn = 100;
var
a: array[1..maxn, 1..maxn] of Integer;
n, i, j, i1, j1, i2, j2: Integer;
p: Longint;
max: Integer;
begin
repeat
ClrScr;
Write('n: ');
ReadLn(n);
until (n > 0) and (n mod 2 <> 0);
repeat
ClrScr;
Write('i1: ');
ReadLn(i1);
until (i1 > 0) and (i1 < n);
repeat
ClrScr;
Write('j1: ');
ReadLn(j1);
until (j1 > 0) and (j1 < n);
repeat
ClrScr;
Write('i2: ');
ReadLn(i2);
until (i2 >= i1) and (i2 <= n);
repeat
ClrScr;
Write('j2: ');
ReadLn(j2);
until (j2 >= j1) and (j2 <= n);
ClrScr;
Randomize;
for i := 1 to n do
begin
for j := 1 to n do
begin
a[i, j] := Random(5) + 1;
Write(a[i, j]: 2, ' ');
end;
WriteLn;
end;
p := 1;
max := 0;
for i := i1 to i2 do
for j := j1 to j2 do
begin
p := p * a[i, j];
if a[i, j] > max then
max := a[i, j];
end;
WriteLn('p=', p);
WriteLn('max=', max);
ReadKey;
end.
Re: Помогите сделать задачу с двумерными массивами.
Добавлено: 05 дек 2012, 14:38
santalix
Спасибо , справился сам.
Re: Помогите сделать задачу с двумерными массивами.
Добавлено: 11 дек 2012, 19:18
santalix
Код: Выделить всё
Program lab3;
var
S,i,j,maxN,max,m:integer;
z:real;
matr: array [1..100, 1..100] of longint;
begin
writeln('Массив');
repeat
writeln('Введите размерность массива');
readln(maxN);
If maxN mod 2=0 then
writeln('Неправильная размерность');
until maxN mod 2<>0;
i:=0;
repeat
i:=i+1;
j:=0;
repeat
j:=j+1;
write('graph[',i,',',j,']= ');
readln(matr[i,j]);
until j=maxN;
until i=maxN;
S:=1;
z:=maxN div 2+1;
for i:=1 to maxN do
for j:=1 to maxN do
If (i+j=maxN+1) or( (i>=z) and (i+j<>maxN+1) and (i+j<maxN+1)) or ((j>=z) and (i+j<>maxN+1) and (i+j<maxN+1)) then
S:=S*matr[i,j];
writeln('S=',S);
max:=-maxint;
for i:=1 to maxN do
for j:=1 to maxN do
If (i+j=maxN+1) or( (i>=z) and (i+j<>maxN+1) and (i+j<maxN+1)) or ((j>=z) and (i+j<>maxN+1) and (i+j<maxN+1)) then
m:=matr[i,j];
If m>max then
max:=m;
writeln('max= ',max);
end.