Дана действительная квадратная матрица порядка n Найти наибольше из значений элементом расположеных в заштрихованой части матрицы. var i,j,n:integer; c:array[1..100,1..100] of integer; max:=c[1,1]; begin readln(n); For i:=1 to...
Дана действительная квадратная матрица порядка n Найти наибольше из значений элементом расположеных в заштрихованой части матрицы.
var i,j,n:integer;
c:array[1..100,1..100] of integer;
max:=c[1,1];
begin
readln(n);
For i:=1 to n do
for j:=1 to n do
c[i,j]:=random(99)+1;
for i:=1 to n do
begin
for j:=1 to n do
write(c[i,j]:5);
writeln;
end;
if (i>=j) and ((i+j)<=(n+1)) or
(i<=j) and ((i+j)>=n+1) then
begin
if max writeln(max);
end;
end.
Не могу понять почему максимум становится всегда последний элемент матрицы хотя в матрице ( в выделеной области) есть значения больше . Помогите найти ошибку или если ошибок оченьь много напишите готовый код к заданию. Заранее спасибо
Ответ(ы) на вопрос:
По поводу вашей программы:
1. Строка if max writeln(max); написана с нарушениями синтаксиса, приведённый вами код не будет компилироваться. Исходя из этого, я не особенно вчитывался и в предшествующие ей проверки, т.к. не совсем понятно, что именно вы хотели сделать в конце.
2. Все проверки максимума (я про if (i>=j) and.. и т.д.) вы делали после выхода из цикла. Могу предположить, что из-за этого у вас и возникали проблемы с нахождением максимума, ведь после прохождения цикла i и j хранят последнюю строку и последний столбец.
Предлагаю внести следующие изменения:
1. Индексацию массивов начинаем с нуля, тогда введённое n уменьшаем на единицу перед началом работы.
2. И присвоение, и вывод элементов, и нахождения максимума производим в одном цикле. Зачем гонять программу несколько раз по кругу, если можно сделать обход единожды?
3. Максимум ищем по следующим условиям: если
(слева) индекс столбца меньше или равен индексу строки, но не меньше, чем n/2, округлённое в большую сторону
(справа) индекс столбца больше или равен индексу строки, но не превышает n/2, округлённое в большую сторону
(и для обоих сторон) если элемент на пересечении индексов больше максимума.
Прилагается исходник и скрин нескольких результатов работы. "правую" и "левую" часть из своего объяснения обвёл разными цветами. Эти части соответствуют "заштрихованной" области из вашего задания.
Не нашли ответ?
Похожие вопросы