
Другие языки программирования и технологии
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-ое совсем никак не могу осилить
Здравствуйте! помогите пожалуйста выполнить зачётные задания по программированию на Pascal

Доброго времени суток.
Что-то странное вы написали. Разбираться желания нет, извините.. . Предлагаю альтернативное решение. :-)
Вот такой код нарисует на экране область, в которой требуется найти максимальный элемент.
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;
Вот и все. Остальное оформление, присвоение значений элементам матрицы и пр. пожалуйста сами, иначе это будет уже не помощь.
Удачи!
Что-то странное вы написали. Разбираться желания нет, извините.. . Предлагаю альтернативное решение. :-)
Вот такой код нарисует на экране область, в которой требуется найти максимальный элемент.
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;
Вот и все. Остальное оформление, присвоение значений элементам матрицы и пр. пожалуйста сами, иначе это будет уже не помощь.
Удачи!
кульно, а где и на кого учишься?
Думашь кому то охото эти задачки решать?!
Похожие вопросы
- Здравствуйте! Помогите, пожалуйста! Вобщем мне нужно сделать html или php форму.
- Здравствуйте. Помогите пожалуйста. Хочу стать программистом. 1
- Помогите пожалуйста написать программу на языке программирования AssemblerКто первый поможет сделать правильно10балов+50
- Мальчики! Помогите пожалуйста с задачей на языке программирования C#
- Помогите пожалуйста по основам алгоритмизации и программирования (решить в виде задачки).
- Здравствуйте! Помогите пожалуйста с версткой Html+css!
- Здравствуйте. Помогите пожалуйста советом.!
- помогите пожалуйста с 3 заданием, С++
- Здравствуйте! Помогите пожалуйста привязку сделать в Кореле...
- здравствуйте, помогите пожалуйста, что не так вот c C++ кодом: