Двумерные массивы: задачи сортировок и перестановок в двумерных массивах
Лабораторная работа 14. Двумерные массивы: задачи сортировок и перестановок в двумерных массивах
Цель работы: изучить особенности применения алгоритмов сортировок и перестановок в двумерных массивах, научиться решать задачи сортировок и перестановок в двумерных массивах на языке C++.
При выполнении лабораторной работы для каждого задания требуется написать программу на языке С++, которая получает на входе числовые данные (в зависимости от постановки задачи), выполняет генерацию и вывод двумерного массива указанного типа. В каждой задаче необходимо выполнить обработку двумерного массива. Для этого необходимо разработать алгоритм (сортировок или перестановок в двумерных массивах) и реализовать его в виде отдельной функции. Ввод данных осуществляется с клавиатуры с учетом требований к входным данным, содержащихся в постановке задачи. Ограничениями на входные данные является диапазон используемого числового типа данных в языке С++ и максимально допустимый размер объявляемого двумерного массива.
Теоретические сведения.
Ознакомьтесь с материалом лекции 14.
Задания к лабораторной работе.
- Объявите двумерный вещественный массив, в котором n x m элементов. Заполните его числами, полученными по закономерности: . Отсортируйте каждую строку массива по убыванию. Распечатайте его в виде таблицы с точностью до 3 знаков после запятой дважды – до и после сортировки. Оформите генерацию, вывод массива и сортировку строк с помощью функций.
- Объявите двумерный целочисленный массив, в котором n строк по m элементов. Выполните генерацию массива случайными целыми числами из промежутка [a; b). Переставьте столбцы массива так, чтобы их максимальные элементы образовали возрастающую последовательность. Выведите массив на экран в виде таблицы дважды – до и после перестановки. Оформите генерацию, вывод массива и перестановку столбцов с помощью функций.
- Объявите двумерный вещественный массив, в котором n x m элементов. Выполните генерацию массива случайными вещественными числами из промежутка [a; b). Отсортируйте каждый столбец массива по возрастанию. Распечатайте его в виде таблицы с точностью до 2 знаков после запятой дважды – до и после сортировки. Оформите генерацию, вывод массива и сортировку столбцов с помощью функций.
- Дана квадратная матрица размера 2n x 2n. Получите новую матрицу, переставляя ее блоки размера n x n в соответствии с рисунком.
- Приведите квадратную целочисленную матрицу n x n к треугольному виду. Способ генерации матрицы выберите самостоятельно.
Указания к выполнению работы.
Каждое задание необходимо решить в соответствии с изученными методами объявления, генерации и вывода двумерных массивов в языке С++. Обработку данных необходимо выполнить, используя алгоритмы сортировок или перестановок данных в двумерных массивах. При разработке программного кода требуется использовать метод процедурной абстракции и комментировать фрагменты кода.
Следует реализовать каждое задание в соответствии с приведенными этапами:
- изучить словесную постановку задачи, выделив при этом все виды данных;
- сформулировать математическую постановку задачи;
- выбрать метод решения задачи, если это необходимо;
- разработать графическую схему алгоритма;
- записать разработанный алгоритм на языке С++;
- разработать контрольный тест к программе;
- отладить программу;
- представить отчет по работе.
Требования к отчету.
Отчет по лабораторной работе должен соответствовать следующей структуре.
- Титульный лист.
- Словесная постановка задачи. В этом подразделе проводится полное описание задачи. Описывается суть задачи, анализ входящих в нее физических величин, область их допустимых значений, единицы их измерения, возможные ограничения, анализ условий при которых задача имеет решение (не имеет решения), анализ ожидаемых результатов.
- Математическая модель. В этом подразделе вводятся математические описания физических величин и математическое описание их взаимодействий. Цель подраздела – представить решаемую задачу в математической формулировке.
- Алгоритм решения задачи. В подразделе описывается разработка структуры алгоритма, обосновывается абстракция данных, задача разбивается на подзадачи. Схема алгоритма выполняется по ЕСПД (ГОСТ 19.003-80 и ГОСТ 19.002-80).
- Листинг программы. Подраздел должен содержать текст программы на языке программирования С++, реализованный в среде MS Visual Studio 2010.
- Контрольный тест. Подраздел содержит наборы исходных данных и полученные в ходе выполнения программы результаты.
- Выводы по лабораторной работе.
- Ответы на контрольные вопросы.
Контрольные вопросы
- В чем принципиальное отличие задач сортировок двумерных и одномерных массивов?
- Каким образом оформляется прототип функции, чтобы изменения, выполненные с элементами массива, были сохранены после завершения работы функции?
- Приведите возможные обращения к элементу трехмерного массива, аналогичные обращению mas[i][j][k].
- В чем причина неудобства использования массивов слишком больших измерений в программах?
- При решении каких прикладных задач используются многомерные массивы? Отдельно приведите примеры для массивов с измерением два и более.