Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритмические языки: Лабораторная работа №4 -...doc
Скачиваний:
23
Добавлен:
10.11.2019
Размер:
105.98 Кб
Скачать

Министерство образования и науки РФ

Тверской государственный технический университет

Кафедра электронных вычислительных машин

Обработка матриц

Методические указания

к лабораторной работе № 4 по дисциплине

«Алгоритмические языки и программирование»

для студентов специальности 230100 (ИВТ)

Тверь, 2011

1. Цель работы

Приобретение и закрепление навыков работы с двумерными массивами (матрицами).

2. Теоретический материал

Большинство вариантов индивидуальных заданий требует реализации типовых алгоритмов, выполняющих обработку прямоугольной матрицы по строкам или по столбцам. Тип требуемого алгоритма обработки всегда может быть определен при внимательном чтении индивидуального задания. При возникновении затруднений на этом этапе целесообразно проконсуль­тироваться с преподавателем.

Ниже приведены примеры трех алгоритмов для различных категорий задач. Первые два алгоритма решают задачи обработки прямоугольных матриц по строкам и столбцам, третий иллюстрирует пример обработки квадратной матрицы.

2.1. Обработка матриц по строкам

Дана матрица А[M,N]. Определить номер первой ее строки, в которой сумма четных элементов совпадает с суммой нечетных.

Начало

Ввод размеров матрицы M и N

Ввод элементов матрицы А[M,N]

Флаг = нет

Для i от 0 До M

CуммаЧетных = 0

CуммаНечетных = 0

Для j от 0 До N

Если– четный, То

CуммаЧетных = CуммаЧетных + A[i,j]

Иначе

CуммаНечетных = CуммаНечетных + A[i,j]

Все-Если

Все-Для-j

Если CуммаЧетных = CуммаНечетных, То

Флаг = Да

Прервать Цикл

Все-Если

Все-Для-i

Если Флаг = Нет, То

Печать «Такой строки в матрице нет»

Иначе

Печать «Суммы совпадают в строке» + i

Все-Если

Конец

2.2. Обработка матриц по столбцам

Дана матрица А[M,N]. Поменять местами столбцы этой матрицы, которые имеют максимальное и минимальное произведение отрицательных элементов.

Начало

Ввод размеров матрицы M и N

Ввод элементов матрицы А[M,N]

МинПроизв = МаксимальноеЧисло

МаксПроизв = МинимальноеЧисло

СтолбМин = -1

СтолбМакс = -1

Для j от 0 До N

Произведение = 1

Для i от 0 До M

Если A[i,j] < 0, То

Произведение = Произведение * A[i,j]

Все-Если

Все-Для-i

Если Произведение < МинПроизв, То

МинПроизв = Произведение

СтолбМакс = j

Все-Если

Если Произведение > МаксПроизв, То

МаксПроизв = Произведение

СтолбМин = j

Все-Если

Все-Для-j

Если СтолбМакс = -1 И СтолбМин = -1, То

Печать «Отрицательных элементов в матрице нет»

Иначе Если СтолбМакс = СтолбМин, То

Печать «Отрицательные элементы только в одном столбце»

Иначе

Для i от 0 До M

Х = A[i, СтолбМакс]

A[i, СтолбМакс] = A[i, СтолбМин]

A[i, СтолбМин] = Х

Все-Для-i

Печать матрицы А[M,N]

Все-Если

Конец

2.3. Обработка квадратных матриц

Дана матрица А[N, N]. Заменить все нечетные элементы этой матрицы, лежащие ниже главной диагонали, на произведение четных элементов, расположенных выше главной диагонали.

Начало

Ввод размера матрицы N

Ввод элементов матрицы А[N,N]

Произведение = 1

Флаг = Нет

Для i от 0 До N

Для j от 0 До N

Если i < j И A[i,j] - четный, То

Произведение = Произведение * A[i,j]

Флаг = Да

Все-Если

Все-Для-j

Все-Для-i

Если Флаг = Нет, То

Печать «Четных выше диагонали в матрице нет»

Выход Из Программы

Все-Если

Флаг = Нет

Для i от 0 До M

Для j от 0 До N

Если A[i,j] - нечетный, То

A[i,j] = Произведение

Флаг = Да

Все-Если

Все-Для-j

Все-Для-i

Если Флаг = Нет, То

Печать «Нечетных ниже диагонали в матрице нет»

Иначе

Печать матрицы А[M,N]

Все-Если

Конец