Найти номер наибольшего нечётного элемента массива m на n - Pascal
Формулировка задачи:
Найти номер наибольшего элемента нечётного массива m на n.
Решение задачи: «Найти номер наибольшего нечётного элемента массива m на n»
textual
Листинг программы
const mm = 6; {максимальные размеры массива}
mn = 6;
var a: array[1..mm, 1..mn] of integer;
i, j, m, n, mi, mj: integer;
f: boolean;
begin
{ввод размера массива с проверкой}
repeat
write('m в диапазоне 1..', mm, '; m = ');
readln(m)
until m in [1..mm];
repeat
write('n в диапазоне 1..', mn, '; n = ');
readln(n)
until n in [1..mn];
{ввод элементов массива}
writeln('Введите элементы массива:');
for i := 1 to m do
for j := 1 to n do
begin
write('A[', i, ', ', j, '] = ');
readln(a[i, j])
end;
{вывод массива}
writeln('Исходный массив');
for i := 1 to m do
begin
for j := 1 to n do write(a[i, j]:12);
writeln
end;
{поиск номеров наибольшего нечётного элемента массива}
f := false; {флаг факта находки нужного элемента, пока не нашли, поэтому false}
for i := 1 to m do
for j := 1 to n do
if odd(a[i, j]) {если элемент нечётный,}
then if not f or (a[i, j] > a[mi, mj]) {то, если элемент ещё не был найден или элемент больше максимального,}
then begin {то}
mi := i; {запоминаем номера максимального элемента}
mj := j;
f := true {помечаем, что максимальный элемент найден}
end;
{печатаем результат}
if f
then write('Максимальный элемент = ', a[mi, mj], '; его номера: по вертикали ', mi, ', по горизонтали ', mj)
else write('В массива нет нечётных элементов');
readln
end.
Объяснение кода листинга программы
- Создание констант для максимальных размеров массива:
- Название переменных:
mmиmn - Значения переменных:
6и6
- Название переменных:
- Создание переменных:
- Название переменной:
a - Значение переменной:
array[1..mm, 1..mn] of integer - Название переменных:
i,j,m,n,mi,mj,f - Значение переменных:
integer,integer,integer,integer,integer,integer,boolean
- Название переменной:
- Ввод размера массива с проверкой:
- Пользователь вводит значения переменных
mиnв диапазоне 1..6 с помощью циклов repeat-until - Значения вводятся с клавиатуры и проверяются на соответствие указанному диапазону
- Пользователь вводит значения переменных
- Ввод элементов массива:
- Пользователь последовательно вводит значения элементов в массив
aс помощью вложенных циклов for - Значения вводятся с клавиатуры
- Пользователь последовательно вводит значения элементов в массив
- Вывод исходного массива:
- Выводит элементы массива
aв формате таблицы с помощью вложенных циклов for
- Выводит элементы массива
- Поиск номеров наибольшего нечётного элемента массива:
- Устанавливает начальное значение флага f как
false(ложь) - Использует вложенные циклы for для прохода по элементам массива
a - Проверяет каждый элемент на нечётность с помощью функции odd
- Запоминает номера первого найденного максимального нечётного элемента в переменные
miиmj - Помечает факт нахождения максимального элемента устанавливая значение флага f в
true(истина)
- Устанавливает начальное значение флага f как
- Печать результата:
- Печатает результат в зависимости от наличия максимального нечётного элемента в массиве:
- Если такой элемент найден, выводит его значение и его номера,
- Если такой элемент не найден, выводит сообщение о его отсутствии.
- Печатает результат в зависимости от наличия максимального нечётного элемента в массиве:
- Ожидание ввода перед закрытием программы:
- Ожидает ввода пользователя для завершения программы. Код выполняет ввод и проверку размеров массива, ввод его элементов, вывод исходного массива, поиск и вывод номера наибольшего нечётного элемента.