III. Алгоритм выполнения (Краткие теоретические сведения)

Инструкция к практической работе №14

Тема: Решение задач на поиск минимального, максимального элементов массива. Сортировка массива.

Цель: повторить основные правила языка программирования, сформировать умения выполнения действий в среде программирования Pascal.ABC.net. Оборудование: ПК, проектор, учебник, тетрадь

Ход урока

I. Инструктаж по ТБ

1. Приготовьте рабочее место. Расположите учебные принадлежности так, чтобы они не мешали выполнению заданий. 2. Начинайте и заканчивайте работу по указанию учителя. 3. Соблюдайте правила электробезопасности. 4. Не касайтесь руками экрана монитора. 5. В случае появлении необычного звука, запаха, самопроизвольного отключения ПК немедленно прекратите работу и сообщите учителю

II. Задания для практической работы

Наберите и выполните программы

ВАРИАНТЫ ЗАДАНИЙ

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

Уровень 1

1. Вычислить сумму и число положительных элементов матрицы A[N, N], находящихся над главной диагональю.

2. Дана целая квадратная матрица n-го порядка. Определить, является ли она магическим квадратом, т. е. такой матрицей, в которой суммы элементов во всех строках и столбцах одинаковы.

3. Определить, является ли заданная целая квадратная матрица n-го порядка симметричной (относительно главной диагонали).

4. Дана целочисленная квадратная матрица. Найти в каждой строке наибольший элемент и поменять его местами с элементом главной диагонали в этой же строке.

5. Упорядочить по возрастанию элементы каждой строки матрицы размером n х m.

6. Задана квадратная матрица. Получить транспонированную матрицу (перевернутую относительно главной диагонали).

7. Квадратная матрица, симметричная относительно главной диагонали, задана верхним треугольником в виде одномерного массива. Восстановить исходную матрицу и напечатать по строкам.

8. Задана матрица порядка n и число k. Разделить элементы k-й строки на диагональный элемент, расположенный в этой строке.

9. Для целочисленной квадратной матрицы найти число элементов, кратных k, и наибольший из этих элементов.

10. Найти наибольший и наименьший элементы прямоугольной матрицы и поменять их местами.

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

12. Дана действительная матрица размером n х m. Требуется преобразовать матрицу: поэлементно вычесть последнюю строку из всех строк, кроме последней.

13. Определить наименьший элемент каждой четной строки матрицы А[М, N].

Уровень 2

14. Задана квадратная матрица. Переставить строку с максимальным элементом на главной диагонали со строкой с заданным номером m.

15. Определить номера строк матрицы R[M, N], хотя бы один элемент которых равен с, и элементы этих строк умножить на d.

16. Дана матрица B[N, М]. Найти в каждой строке матрицы максимальный и минимальный элементы и поменять их с первым и последним элементами строки соответственно.

17. Элемент матрицы назовем седловой точкой, если он является наименьшим в своей строке и одновременно наибольшим в своем столбце или, наоборот, является наибольшим в своей строке и наименьшим в своем столбце. Для заданной целой матрицы размером n х m напечатать индексы всех ее седловых точек.

18. Дана вещественная матрица размером n х m. Переставляя ее строки и столбцы, добиться того, чтобы наибольший элемент (или один из них) оказался в верхнем левом углу.

19. Дана квадратная матрица A[N, А]. Записать на место отрицательных элементов матрицы нули, а на место положительных — единицы. Вывести на печать нижнюю треугольную матрицу в общепринятом виде.

20. Дана действительная матрица размером n х m, все элементы которой различны. В каждой строке выбирается элемент с наименьшим значением, затем среди этих чисел выбирается наибольшее. Указать индексы элемента с найденным значением.

21. Дана действительная квадратная матрица порядка N (N — нечетное), все элементы которой различны. Найти наибольший элемент среди стоящих на главной и побочной диагоналях и поменять его местами с элементом, стоящим на пересечении этих диагоналей.

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

23. Дана прямоугольная матрица. Найти строку с наибольшей и строку с наименьшей суммой элементов. Вывести на печать найденные строки и суммы их элементов.

24. В данной действительной квадратной матрице порядка п найти наибольший по модулю элемент. Получить квадратную матрицу порядка n - 1 путем отбрасывания из исходной матрицы строки и столбца, на пересечении которых расположен элемент с найденным значением.

25. Расположить столбцы матрицы D[M, N] в порядке возрастания элементов k-й строки (1 ≤ k ≤ М).

Уровень 3

26. Среди столбцов заданной целочисленной матрицы, содержащих только такие элементы, которые по модулю не больше 10, найти столбец с минимальным произведением элементов.

27. Для заданной квадратной матрицы найти такие k, что k-я строка матрицы совпадает с k-м столбцом.

28. Найти максимальный среди всех элементов тех строк заданной матрицы, которые упорядочены (либо по возрастанию, либо по убыванию).

29. Составить программу, которая заполняет квадратную матрицу порядка п натуральными числами 1, 2, 3,..., n2, записывая их в нее «по спирали».

Например, для n = 5 получаем следующую матрицу:

30. Среди тех строк целочисленной матрицы, которые содержат только нечетные элементы, найти строку с максимальной суммой модулей элементов.

31. Подсчитать количество строк заданной целочисленной матрицы N х N, являющихся перестановкой чисел 1, 2,..., N (т. е. содержащих каждое из чисел 1, 2,..., N ровно один раз).

III. Алгоритм выполнения (Краткие теоретические сведения)

1. Запустите программу Pascal.ABC.net

2. Изучите окно программы

Окно вывода
Кнопка запуска программы
Поле для ввода программы
Текст программы

 

 

3. Введите текст программы. При наборе не стоит учитывать регистр вводимых символов. В Pascal нет различий между заглавными и строчными буквами.

4. Запустите программу на компиляцию. С помощью клавиши F5 или кнопкой запуска программы.

5. Если программа набрана без ошибок, то в ОКНЕ ВЫВОДА вы увидите приглашение ввести данные.

Строка для ввода данных
Приглашение ввести данные

6. После ввода данных необходимо нажать клавишу ENTER

7. Если в программе имеются логические, грамматические, синтаксические ошибки, то вы увидите сообщение об ошибке программы.

Описание ошибки
Подсвеченная строка с ошибкой

Толкование ошибки – в строке предшествующей строке BEGIN пропущен знак «;».

8. После компиляции протестируйте программу.

a. Запустите программу на выполнение

b. Введите тестовые данные

c. Сверьте ответ, если ответы совпали, программу можно считать правильной.

 

Пример 1. Выбор максимального элемента. В одномерном массиве X из примера 1 требуется определить наибольшее значение среди значений элементов и его порядковый номер (индекс).

Идея алгоритма решения этой задачи следующая: чтобы в переменной ХМах получить максимальное значение массива X, сначала в нее заносится первое значение массива Х[1]. Затем значение ХМах поочередно сравнивается с остальными элементами массива, и каждое значение, большее Хmах, присваивается этой переменной. Для получения номера максимального элемента массива в целочисленной переменной imax следует записывать в нее номер элемента массива X одновременно с занесением значения в Хmах. На Алгоритмическом языке это запишется так:

Заметим, что если в массиве X несколько значений, равных максимальному, то в imax будет получен первый номер из этих элементов. Чтобы получить номер последнего элемента, равного максимальному, нужно в ветвлении если заменить знак отношения > на >=. Для нахождение минимального элемента массива достаточно заменить знак отношения «больше» на «меньше».

Оформим в виде процедуры на Паскале подпрограмму поиска максимального элемента в одномерном массиве. Заполним одномерный массив случайными числами (как в примере 1). С помощью процедуры найдем в нем максимальное значение и индекс его первого вхождения в массив.

Процедура МахАггау имеет три параметра: исходный массив А, Мах А — переменную для найденного максимального значения, k — переменную для индекса максимального значения. При обращении к процедуре им соответствуют фактические параметры: X, Xmax, imax. Размер массива определяется глобальной константой n, значение которой используется как в основной программе, так и в процедуре.

Пример 2. Сортировка массива. В одномерном массиве X из N элементов требуется произвести перестановку значений так, чтобы они расположились по возрастанию, т. е. Х1 ≤ Х2 ≤... ≤ XN.

Существует целый класс алгоритмов сортировки. Ниже описан алгоритм, который называется методом пузырька.

Идея алгоритма: производится последовательное упорядочивание смежных пар элементов массива: Х1 и Х2, Х2 и Х3,..., XN-1 и XN. В итоге максимальное значение переместится в XN. Затем ту же процедуру повторяют до ХN-1 и т. д., вплоть до цепочки из двух элементов Х1 и Х2. Такой алгоритм будет иметь структуру двух вложенных циклов, причем внутренний цикл переменной (сокращающейся) длины.

Для сортировки массива по убыванию значений достаточно заменить знак отношения «больше» на «меньше».

Запрограммируем на Паскале процедуру сортировки массива по возрастанию методом пузырька.

Пример 3. Ранее было рассмотрено описание двумерного массива, содержащего среднемесячные температуры за 10 лет, с 2001 по 2010 год. Определить, в каком году за этот период было самое теплое лето, т. е. в каком году была наибольшая средняя температура летних месяцев.

Идея решения: в одномерном массиве S получить средние температуры летних месяцев за каждый год из 10 лет. Затем найти номер наибольшего элемента в этом массиве, это и будет искомый год.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: