Дана действительная квадратная матрица порядка 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, округлённое в большую сторону (и для обоих сторон) если элемент на пересечении индексов больше максимума. Прилагается исходник и скрин нескольких результатов работы. "правую" и "левую" часть из своего объяснения обвёл разными цветами. Эти части соответствуют "заштрихованной" области из вашего задания.
Не нашли ответ?
Ответить на вопрос
Похожие вопросы