|
|
Квадратная матрица В (7х7); наибольший отрицательный элемент и его порядковый номер в массиве «A»Предлагаемые задачи решены средствами языка программирования высокого уровня BASIC. Программы максимально упрощены и не используют операторов, критичных к версиям интерпретаторов (компиляторов) языка, поэтому для этих программ нет ограничений по программному и аппаратному обеспечению. Вариант №13 Задача 20 Для квадратной матрицы В(7х7) найти максимум среди сумм элементов диагоналей, параллельных главной диагонали. Постановка задачи Квадратная матрица B(7х7) представляет собой двухмерный массив в котором местоположение элементов В(i, j) задаётся номером строки i и столбца j : 6 5 4 3 2 1 B11 B12 B13 B14 B15 B16 B17 7 B21 B22 B23 B24 B25 B26 B27 8 B31 B32 B33 B34 B35 B36 B37 9 B41 B12 B43 B44 B45 B46 B47 10 B51 B12 B53 B54 B55 B56 B57 11 B61 B12 B63 B64 B65 B66 B67 B71 B12 B73 B74 B75 B76 B77 Главная диагональ проходит в массиве от левого верхнего угла к правому нижнему. Необходимо получить суммы элементов массива на главной диагонали и всех диагоналях, параллельных главной диагонали (всего 11 сумм) и выбрать из них максимальную. Диагонали условно нумеруем, начиная с правого верхнего угла против часовой стрелки. Угловые элементы диагонали не содержат и во внимание не принимаются. В качестве контрольного примера принимаем матрицу: 2 4 8 1 3 5 1 5 7 1 4 6 4 2 9 5 6 8 4 2 1 5 6 8 9 4 2 8 5 4 8 2 1 1 3 6 2 3 1 8 9 7 4 5 6 2 7 8 1 Аналитическое решение Порядок действий по решению задачи следующий: 1) находим суммы элементов диагоналей S, так как все диагонали параллельны главной диагонали, то начальными для диагоналей являюся элементы первой строки (кроме последнего) и первого столбца (кроме последнего); все последующие элементы диагонали смещены относительно предыдущего на один столбец и одну строку. Сложив элементы диагоналей, получаем по числу диагоналей 11 сумм S1 - S11, которые составляют одномерный массив. 2) выбираем очередное значения суммы; 3) если Si+1 >Si , то Smax = Si+1; 4) если значения кончились, то п.5, иначе п.2; 5) получаем искомый результат Smax. Решение контрольного примера: а) находим суммы диагоналей S1 = 5 + 2 = 7 S2 = 3 + 4 + 1 = 8 S3 = 1 + 6 + 2 + 8 = 17 S4 = 8 + 4 + 4 + 2 + 3 = 21 S5 = 4 + 1 + 8 + 4 + 1 + 7 = 25 S6 = 2 + 7 + 6 + 9 + 1 + 9 + 1 = 35 S7 = 5 + 5 + 8 + 2 + 8 + 8 = 36 S8 = 9 + 6 + 8 + 1 + 7 = 31 S9 = 5 + 4 + 3 + 2 = 14 S10 = 5 + 2 + 6 = 13 S11 = 6 + 5 = 11 б) выбираем из значений сумм максимальное Smax = S7 = 36 . Схема алгоритма 4. Текст программы Листинг программы Комментарии 10 DIM B(7, 7), S(11) описание массива значений матрицы B и значений сумм диагоналей S 20 FOR I = 1 TO 7 начало цикла ввода элементов строк 30 FOR J = 1 TO 7 начало цикла ввода элементов столбцов 40 READ B(I, J) чтение элемента массива, определённых оператором DATA 50 NEXT J завершение цикла ввода элементов столбцов 60 NEXT I завершение цикла ввода элементов строк 70 S(1) = B(1, 6) + B(2, 7) вычисление сумм элементов диагоналей, параллельных главной диагонали и начинающихся с элементов первой строки 80 S(2) = B(1, 5) + B(2, 6) + B(3, 7) 90 S(3) = B(1, 4) + B(2, 5) + B(3, 6) + B(4, 7) 100 S(4) = B(1, 3) + B(2, 4) + B(3, 5) + B(4, 6) + B(5, 7) 110 S(5) = B(1, 2) + B(2, 3) + B(3, 4) + B(4, 5) + B(5, 6) + B(6, 7) 120 S(6) = B(1, 1) + B(2, 2) + B(3, 3) + B(4, 4) + B(5, 5) + B(6, 6) + B(7, 7) вычисление суммы элементов главной диагонали 130 S(7) = B(2, 1) + B(3, 2) + B(4, 3) + B(5, 4) + B(6, 5) + B(7, 6) вычисление сумм элементов диагоналей, параллельных главной диагонали и начинающихся с элементов первого столбца 140 S(8) = B(3, 1) + B(4, 2) + B(5, 3) + B(6, 4) + B(7, 5) 150 S(9) = B(4, 1) + B(5, 2) + B(6, 3) + B(7, 4) 160 S(10) = B(5, 1) + B(6, 2) + B(7, 3) 170 S(11) = B(6, 1) + B(7, 2) 180 FOR N = 1 TO 11 начало цикла обработки значений сумм диагоналей 190 IF S(N) > S THEN S = S(N) выбор максимального значения 195 PRINT "S(";N;")=", S(N) вывод значений сумм диагоналей (необязателен, введён для наглядности) 200 NEXT N завершение цикла обработки значений сумм диагоналей 210 PRINT "Smax =", S вывод искомого результата 220 DATA 2, 4, 8, 1, 3, 5, 1 исходные данные для массива описание для считывания оператором READ 230 DATA 5, 7, 1, 4, 6, 4, 2 240 DATA 9, 5, 6, 8, 4, 2, 1 250 DATA 5, 6, 8, 9, 4, 2, 8 260 DATA 5, 4, 8, 2, 1, 1, 3 270 DATA 6, 2, 3, 1, 8, 9, 7 280 DATA 4, 5, 6, 2, 7, 8, 1 290 STOP останов программы Результат работы программы Задача №26 В массиве A(20) найти наибольший среди отрицательных элементов и его порядковый номер. Постановка задачи По условию задачи нам задан одномерный массив, то есть ряд из 20 элементов: A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20 . Каждый элемент представляет собой произвольное число в диапазоне от ? ? до + ? . Место элемента в массиве определяет его порядковый номер (от 1 до 20). В данном массиве необходимо найти все отрицательные элементы и выбрать из них наибольший. В качестве контрольного примера принимаем массив: 1, 5, -4, 17, -14, 2, 35, -7, 10, 25, -13, -11, 4, 6, 7, 0, 5, -8, 16, 3 . Аналитическое решение Реализовать решение задачи можно методом пребора элементов массива. Каждый элемент по очереди проверяется на отрицательность и сравнивается с ранее найденными отрицательными элементами. Каждый отрицательный элемент, больший ранее найденного фиксируется как промежуточный результат. В результате после перебора всех элементов будем иметь искомый ответ. Чтобы выполнить поставленную задачу, необходимо произвести следующие действия: берём первый элемент массива Ai = A1; рассмотрим элемент Ai на отрицательность: если Аi < 0 то п. 3 если Аi ? 0 то см. п. 5; сравниваем найденный отрицательный элемент с уже имеющимся Ai > Аотр. наиб. (для первого элемента массива Аотр. наиб. = 0): если условие выполнено, то п.4; если нет, то п. 5; принимаем найденный отрицательный элемент за искомый результат задачи Аотр. наиб. = Ai , и запоминаем его порядковый номер n = i; выбираем следующий элемент массива Ai и см п. 2, если элемент последний, то п.6; искомый результат Аотр. наиб. с порядковым номером n. Для контрольного примера наибольшим отрицательным элементом является А(3) = -4 . Схема алгоритма Текст программы Программу для обработки поставленной задачи на языке высокого уровня BASIC составляем с применением циклических операции, что сокращает длину программы, а следовательно и время на её выполнение. Таблица 2 Листинг программы Примечание 10 DIM A(20) описание массива 20 B = 0: B1 = 0: N = 0 начальное значение констант 30 FOR I = 1 TO 20 начало цикла ввода элементов массива 40 INPUT A(I) ввод очередного элемента массива 50 NEXT I завершение цикла ввода 60 FOR I = 1 TO 20 начало цикла обработки элементов 70 IF A(I) < 0 THEN 90 проверка элемента на отрицательность 80 GOTO 110 безусловный переход (элемент положителен) 90 B = B1: B1 = A(I): C = I переназначение текущего элемента и его номера 100 IF B1 < B THEN 110 сравнение нового элемента с текущим 105 B = B1: C = I назначение рассматриваемого элемента текущим 110 NEXT I завершение цикла обработки элементов 120 PRINT "A(";N;") = "; B1 вывод результата на монитор 130 STOP останов программы Результат работы программы 1 Работа на этой странице представлена для Вашего ознакомления в текстовом (сокращенном) виде. Для того, чтобы получить полностью оформленную работу в формате Word, со всеми сносками, таблицами, рисунками, графиками, приложениями и т.д., достаточно просто её СКАЧАТЬ. |
|
Copyright © refbank.ru 2005-2024
Все права на представленные на сайте материалы принадлежат refbank.ru. Перепечатка, копирование материалов без разрешения администрации сайта запрещено. |
|