Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование / кавалеров.doc
Скачиваний:
49
Добавлен:
10.12.2013
Размер:
108.54 Кб
Скачать

6

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

Методические указания для лабораторной работы №1

по дисциплине

«Программирование и основы алгоритмизации»

Пермь 2004

Цель работы: изучение особенностей составления простых алгоритмов различной временной сложности; получение навыков модификации простых программ; экспериментальное определение временной сложности алгоритмов.

Порядок выполнения работы

1. Необходимо определить два задания согласно своему варианту по табл. 1.

Таблица 1.

Варианты заданий.

Вариант

Номер задания A

(табл. 2.)

Номер задания B

(табл. 3.)

Вариант

Номер задания A

(табл. 2.)

Номер задания B

(табл. 3.)

Таблица 2.

Задание A

N

Составить программу обработки множества n целых чисел согласно указанному заданию.

Найти максимальное и минимальное число отдельно среди всех положительных чисел и отдельно среди всех отрицательных чисел.

Определить, сколько среди заданного множества чисел таких чисел, которые по абсолютному значению меньше среднего арифметического.

Найти число, которое «дальше всех» от среднего арифметического, если таких чисел несколько, то в качестве результата использовать число, идущее первым по порядку среди таких чисел.

Определить, есть ли среди заданного множества чисел такое число, которое равно среднему арифметическому, округленному до ближайшего целого.

Найти число, которое «ближе всех» к среднему арифметическому, если таких чисел несколько, то в качестве результата использовать число, идущее последним по порядку среди таких чисел.

Определить, сколько среди заданного множества чисел таких чисел, значения которых находятся между средними арифметическими четных и нечетных чисел.

Найти отдельно среднее арифметическое для положительных и отрицательных чисел.

Найти среднее арифметическое без учета максимального и минимального числа.

Определить, сколько среди заданного множества чисел таких чисел, которые отличаются от среднего арифметического не более, чем на значение среднего арифметического.

Найти число, которое «ближе всех» к среднему арифметическому, если таких чисел несколько, то в качестве результата использовать число, идущее первым по порядку среди таких чисел.

Найти максимальное и минимальное число отдельно среди всех четных чисел и отдельно среди всех нечетных чисел.

Найти отдельно среднее арифметическое для четных и нечетных чисел.

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

Найти число, которое «дальше всех» от среднего арифметического, если таких чисел несколько, то в качестве результата использовать число, идущее последним по порядку среди таких чисел.

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

Таблица 3.

Задание B

N

Согласно указанному заданию составить программу по работе с матрицей A размером n на n, содержащей целые числа, при этом нумерация индексов ведется от 1 до n.

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

Умножить матрицу A на матрицу B, полученную из матрицы А расположением в обратном порядке элементов в нечетных строках.

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

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

Умножить матрицу A на матрицу B, полученную из матрицы А заменой каждого четного столбца ближайшим слева столбцом.

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

Умножить матрицу A на матрицу B, полученную из матрицы А перестановкой в обратном порядке элементов главной диагонали.

Умножить матрицу на первый по порядку столбец этой матрицы среди всех столбцов, содержащих хотя бы два одинаковых числа, или установить отсутствие таких столбцов.

Умножить матрицу A на матрицу B, полученную из матрицы А заменой каждого четного по порядку элемента столбца максимальным значением в этом столбце.

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

Умножить матрицу A на матрицу B, полученную из матрицы А заменой отрицательных элементов этой матрицы их абсолютными значениями.

Умножить матрицу A на матрицу B, полученную из матрицы А заменой каждого максимального числа в столбце минимальным числом в соответствующей строке.

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

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

Умножить матрицу A на матрицу B, полученную из матрицы А заменой каждого элемента главной диагонали на максимальный элемент в соответствующей строке.

2. Выполнение задания A.

2.1. Разработать программу согласно заданию A.

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

2.3. Экспериментально определить временную сложность алгоритма, реализуемого программой для задания A. Для этого необходимо модифицировать ввод данных в этой программе с целью обеспечения возможности автоматического ввода данных, а также с целью определения времени выполнения алгоритма. Для измерения времени выполнения алгоритма при небольших значениях n можно поместить фрагмент «Выполнения алгоритма» внутри дополнительного цикла, который будет повторять выполнение алгоритма заданное число раз, чтобы обеспечить достаточно большую задержку по времени. Разработанный фрагмент программы, реализующий выполнение алгоритма должен быть размещен внутри этого дополнительного цикла. Для измерения времени выполнения алгоритма необходимо подобрать количество повторений дополнительного цикла таким образом, чтобы задержка при выполнении алгоритма с учетом этого цикла была не менее 5 секунд. Если задержка становится слишком большой, то количество повторений дополнительного цикла следует уменьшить. Затем на основе этой задержки необходимо вычислить время выполнения алгоритма, разделив значение задержки на количество повторений дополнительного цикла. Измерить время выполнения алгоритма, выбрав 5 значений n распределенных по всему диапазону от 1 до 100. Заполнить табл. 4.

Таблица 4.

Результаты определения времени выполнения алгоритма для задания a.

n

Время выполнения алгоритма для задания A

Показать, что экспериментальные данные согласуются с результатом, полученным при выполнении п. 2.2.

3. Выполнение задания B.

3.1. Разработать программу согласно заданию B.

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

3.3. Экспериментально определить временную сложность алгоритма, реализуемого программой для задания B. Для этого необходимо модифицировать ввод данных в этой программе с целью обеспечения возможности автоматического ввода данных, а также с целью определения времени выполнения алгоритма. Измерение времени выполнения алгоритма осуществляется аналогично тому, как это указано в п. 2.3. Заполнить табл. 5.

Таблица 5.

Результаты определения времени выполнения алгоритма для задания b.

N

Время выполнения алгоритма для задания B

Показать, что экспериментальные данные согласуются с результатом, полученным при выполнении п. 3.2.

4. Экспериментально определить временную сложность алгоритма, решающего задачу о коммивояжере. Программа, реализующая этот алгоритм и обеспечивающая возможность автоматического ввода данных для различных n, находится в файле NPHARD.PAS.

Определить минимальное значение n, при котором время выполнения алгоритма становится равным примерно одной секунде. После этого измерить время выполнения алгоритма при увеличении n, выбрав несколько значений n так, чтобы при максимальном n задержка была не более двух минут. Заполнить табл. 6.

Таблица 6.

Результаты определения времени выполнения алгоритма решения задачи о коммивояжере.

n

Время выполнения алгоритма решения задачи о коммивояжере

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

Содержимое отчета

  1. Титульный лист, цель работы.

  2. Задание А согласно своему варианту.

  3. Исходный текст программы для задания A.

  4. Временная сложность алгоритма, реализуемого программой для задания A.

  5. Заполненная табл. 4 с соответствующими выводами.

  6. Задание B согласно своему варианту.

  7. Исходный текст программы для задания B.

  8. Временная сложность алгоритма, реализуемого программой для задания B.

  9. Заполненная табл. 5 с соответствующими выводами.

  10. Задание согласно п. 4 раздела «Порядок выполнения работы».

  11. Заполненная табл. 6 с соответствующими выводами.

Соседние файлы в папке Программирование