—правила организации вложенного цикла с учетом порядка перебора элементов матрицы;
—правила использования приемов программирования в структурах с вложенными циклами;
—способы ввода и вывода матриц, имеющиеся в языке программирования.
2.Разработать алгоритм решения в соответствии с заданием.
3.Составить программу решения задачи.
4.Подготовить тестовый вариант программы и исходных данных.
Задание к работе
1.Обработать на ЭВМ матрицу в соответствии с вариантом задания, указанного в таблице 4. Вывести на печать результаты и исходную матрицу в общепринятом виде.
2.Проверить правильность выполнения программы с помощью тестового варианта
Пример выполнения работы
Задание 1, Выполнить на ЭВМ решение задачи. Записать в массив В(N,КМАХ) положительные элементы строк матрицы A (N, M) (N<=20, M<= 10) до первого отрицательного, где КМАХ — наибольшее значение числа положительных элементов в строке до первого отрицательного. Вывести на печать сформированную матрицу В. На печать выводить только те элементы, которые записаны в матрицу.
Таблица 4
Вариант задания
Имя матрицы и размеры
Действия
Условия и ограничения
I
А (10, 15)
Вычислить и запомнить сумму и число положительных элементов каждого столбца матрицы. Результаты отпечатать в виде двух строк
Аij>0
A (N, М)
Вычислить и запомнить суммы и числа элемен- тов каждой строки матрицы. Результаты отпеча- тать в виде двух столбцов
N<20 М<15
B(N,N)
Вычислить сумму и число элементов матрицы, находящихся под главной диагональю и на ней
N<12
C(N,N)
Вычислить сумму и число положительных элементов матрицы, находящихся над главной диагональю
Сi,j>0
N<12
D (К, К)
Записать на место отрицательных элементов матрицы нули и вывести ее на печать в общепринятом виде
К<10
D(10, 10)
Записать на место отрицательных элементов матрицы нули, а на место положительных — единицы. Вывести на печать нижнюю треугольную матрицу в общепринятом виде
F(N,M)
Найти в каждой строке матрицы максимальный и минимальный элементы и поместить их на место первого и последнего элемента строки соответственно. Матрицу напечатать в общепринятом виде
N<20 М<10
F(10,8)
Транспонировать матрицу и вывести на печать элементы главной диагонали и диагонали, расположенной под главной. Результаты разместить в двух строках
N (10, 10)
Для целочисленной матрицы найти для каждой строки число элементов, кратных пяти, и наибольший из полученных результатов
ni,j/5*5 = nij
N(10,10)
Из положительных элементов матрицы N сформировать матрицу М (10, КМАХ), располагая их в строках матрицы подряд, где КМАХ — максимальное число положительных элементов строки матрицы N. Записать нули на место отсутствующих элементов. Отпечатать обе матрицы в общепринятом виде
Р (N, N)
Найти в каждой строке наибольший элемент и поменять его местами с элементом главной диагонали. Отпечатать полученную матрицу в общепринятом виде
N<15
R(K,N)
Найти наибольший и наименьший элементы матрицы и поменять их местами
К<20 N<10
S (25, 8)
Ввести исходные данные в первые 24 строки и первые 7 столбцов. Вычислить среднее арифметическое значение элементов каждой строки и записать его в 8-й столбец, а также среднее арифметическое каждого столбца и записать его в 25-ю строку. Отпечатать полученную матрицу в общепринятом виде
T(N,M)
Найти строку с наибольшей и наименьшей суммой элементов. Вывести на печать найденные строки и суммы их элементов
N<20
M<15
V(15, 10)
Упорядочить по возрастанию элементы каждой строки матрицы. Отпечатать полученную матрицу в общепринятом виде
Алгоритм решения следующий. Организовать вложенный цикл для перебора элементов исходной матрицы А по строкам. Для этого во внешнем цикле следует изменять индекс строки, а во внутреннем — индекс столбца; во внутреннем цикле — находить и записывать в соответствующую строку матрицы В положительные элементы строки до первого отрицательного, а также подсчитывать число положительных элементов К в этой строке. Для подсчета числа положительных элементов необходимо перед внутренним циклом задать его начальное значение, равное 0, а внутри цикла считать число таких элементов, используя оператор присваивания К=К + 1. Если положительных элементов в строке нет, то К = 0, если в строке все элементы положительны, то К = N.
Как только встретится отрицательный элемент в строке матрицы, необходимо записать в матрицу В вместо него — 1 и выйти из внутреннего цикла Во внешнем цикле следует найти наибольшее значение из всех К, вычисленных для отдельных строк. Для этого перед внешним циклом необходимо задать начальное значение КМАХ, например, равное нулю, а внутри внешнего цикла сравнивать К с КМАХ и находить наибольшее из них.
Таким образом, матрица В имеет размер N x КМАХ. В некоторых строках матрицы В будет записано элементов меньше, чем КМАХ. По условию задачи на печать необходимо вывести только элементы, записанные в матрицу В. Наличие в строке матрицы — 1 указывает на окончание вывода элементов этой строки.
Схема алгоритма решения представлена на рисунке 5. Блок 3 задает начальное значение КМАХ, блок 4 организует внешний цикл, изменяющий индекс строки, блок 5 задает начальное значение К, блок 6 организует внутренний цикл, изменяющий индекс столбца. Блок 7 проверяет знак элемента массива ау. Если он положительный, то блок 8 осуществляет запись этого элемента в массив В и увеличивает значение К на 1. Если элемент отрицательный, то блок 9 осуществляет запись — 1 в матрицу В и далее осуществляется выход из внутреннего цикла к блоку 10.
Из внутреннего цикла возможен естественный выход (если в строке не было отрицательных элементов), который осуществляется также к блоку 10. Блоки 10 и 11 находят значение KMAX.
Блоки 12 и 13 организуют цикл для печати результатов. Внутри цикла проверяется знак элемента. Если он положительный, то осуществляет вывод его на печать. При печати необходимо предусмотреть блокировку перехода на новую строку перед выводом следующего элемента этой же строки. Если элемент отрицательный, то осуществляется выход из внутреннего цикла к блоку 16, который обеспечивает переход на следующую строку печатающего устройства, подготавливая его для вывода элементов следующей строки. Естественный выход из внутреннего цикла также осуществляется к блоку 16.