Другие языки программирования и технологии

Здравствуйте! помогите пожалуйста выполнить зачётные задания по программированию на Pascal

1-ое задание я выполнил, но неправильно исправьте пожалуйста:program bilet;const n=10;type matr=array[0..n,0..n] of integer;function max7(a:matr):integer;vari,j:integer;m:integer;begin m:=A[0,0]; for j:=0 to 5 do for i:=j to n-j do if a[i,j]>m then m:=a[i,j]; for j:=6 to 10 do for i:=j downto n-j do if a[i,j]>m then m:=a[i,j]; max7:=m;randomize;writeln;for i:=0 to n dofor j:=0 to n do x[i;j] := random(19-9);for i:=0 to n dobeginfor j:=0 to n dowrite (x[i,j]);writelnendwrite ('max element=', max(x) );readln;end.а 2-ое совсем никак не могу осилить
Доброго времени суток.

Что-то странное вы написали. Разбираться желания нет, извините.. . Предлагаю альтернативное решение. :-)

Вот такой код нарисует на экране область, в которой требуется найти максимальный элемент.

for i:=1 to n do begin
for j:=1 to n do
if ((i+j <=2*i) and (i+j <= n+1)) or
((i+j >=2*i) and (i+j >= n+1)) then Write('0') else Write(' ');
WriteLn;
end;

Немного поясню. Если сумма индексов строки и столбца равна удвоенному индексу строки или столбца, то эти индексы будут принадлежать диагональному элементу. Следовательно, если суимма индексов будет меньше или равна удвоенному индексу строки, то будут выбраны все элементы главной диагонали и лежащие ниже ее. Индексы побочной диагонали уовлетворяют такому условию i+j=n+1, где n - порядок матрицы. Отсюда, если будет выполняться условие i+j <= n+1, то будут выбраны элементы побочной диагонали и лежащие выше ее. Это позволяет построить левую часть области поиска. Меняя знаки отношения в этих условиях и применяя операцию ИЛИ, строим правую область. А теперь можно приступать к решению задачи.

function Max(A: Matr): Integer;
var
i, j, MaxN : Integer;
begin
MaxN := -MaxInt; {сначала присвоим максимальному значению заведомо малое число}
for i:=1 to n do {цикл по строкам}
for j:=1 to n do {цикл по столбцам}
if (((i+j <=2*i) and (i+j <= n+1)) or
((i+j >=2*i) and (i+j >= n+1))) and
(MaxN < A[i,j]) then MaxN := A[i,j]; {находим максимальный элеменгт в указанной области}
Max := MaxN; {возвращаем результат}
end;

function Test(A: Matr; k: Integer): Boolean;
var
i, j, SumD, SumCol : Integer;
begin
{считаем сумму элементов побочной диагонали}
SumD := 0;
for i:=1 to n do
for j:=1 to n do
if (i+j = n+1) then SumD := SumD + A[i,j];

{вместо двойного цикла можно применить одинарный, если вычислять индекс столбца}
SumD := 0;
for i:=1 to n do SumD := SumD + A[i, n+1-i];

{считаем сумму столбца k}
SumCol := 0;
for i:=1 to n do
SumCol := SumCol + A[i,k];

Test := SumCol > SumD;
end;

Вот и все. Остальное оформление, присвоение значений элементам матрицы и пр. пожалуйста сами, иначе это будет уже не помощь.

Удачи!
Сайх-Хажи Зухайраев
Сайх-Хажи Зухайраев
59 612
Лучший ответ
кульно, а где и на кого учишься?
Aleksandr К
Aleksandr К
2 978
Думашь кому то охото эти задачки решать?!