Опубликован: 02.02.2011 | Уровень: для всех | Доступ: свободно
Лекция 15:

Двумерные массивы: задачи сортировок и перестановок в двумерных массивах

< Лекция 14 || Лекция 15: 12 || Лекция 16 >

Лабораторная работа 14. Двумерные массивы: задачи сортировок и перестановок в двумерных массивах

Цель работы: изучить особенности применения алгоритмов сортировок и перестановок в двумерных массивах, научиться решать задачи сортировок и перестановок в двумерных массивах на языке C++.

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

Теоретические сведения.

Ознакомьтесь с материалом лекции 14.

Задания к лабораторной работе.

  1. Объявите двумерный вещественный массив, в котором n x m элементов. Заполните его числами, полученными по закономерности: a_{ij}=\sum\limits_{n=0}^i\frac{(i+1)(j+5)}{i+j+1}. Отсортируйте каждую строку массива по убыванию. Распечатайте его в виде таблицы с точностью до 3 знаков после запятой дважды – до и после сортировки. Оформите генерацию, вывод массива и сортировку строк с помощью функций.
  2. Объявите двумерный целочисленный массив, в котором n строк по m элементов. Выполните генерацию массива случайными целыми числами из промежутка [a; b). Переставьте столбцы массива так, чтобы их максимальные элементы образовали возрастающую последовательность. Выведите массив на экран в виде таблицы дважды – до и после перестановки. Оформите генерацию, вывод массива и перестановку столбцов с помощью функций.
  3. Объявите двумерный вещественный массив, в котором n x m элементов. Выполните генерацию массива случайными вещественными числами из промежутка [a; b). Отсортируйте каждый столбец массива по возрастанию. Распечатайте его в виде таблицы с точностью до 2 знаков после запятой дважды – до и после сортировки. Оформите генерацию, вывод массива и сортировку столбцов с помощью функций.
  4. Дана квадратная матрица размера 2n x 2n. Получите новую матрицу, переставляя ее блоки размера n x n в соответствии с рисунком.

  5. Приведите квадратную целочисленную матрицу n x n к треугольному виду. Способ генерации матрицы выберите самостоятельно.

Указания к выполнению работы.

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

Следует реализовать каждое задание в соответствии с приведенными этапами:

  • изучить словесную постановку задачи, выделив при этом все виды данных;
  • сформулировать математическую постановку задачи;
  • выбрать метод решения задачи, если это необходимо;
  • разработать графическую схему алгоритма;
  • записать разработанный алгоритм на языке С++;
  • разработать контрольный тест к программе;
  • отладить программу;
  • представить отчет по работе.

Требования к отчету.

Отчет по лабораторной работе должен соответствовать следующей структуре.

  • Титульный лист.
  • Словесная постановка задачи. В этом подразделе проводится полное описание задачи. Описывается суть задачи, анализ входящих в нее физических величин, область их допустимых значений, единицы их измерения, возможные ограничения, анализ условий при которых задача имеет решение (не имеет решения), анализ ожидаемых результатов.
  • Математическая модель. В этом подразделе вводятся математические описания физических величин и математическое описание их взаимодействий. Цель подраздела – представить решаемую задачу в математической формулировке.
  • Алгоритм решения задачи. В подразделе описывается разработка структуры алгоритма, обосновывается абстракция данных, задача разбивается на подзадачи. Схема алгоритма выполняется по ЕСПД (ГОСТ 19.003-80 и ГОСТ 19.002-80).
  • Листинг программы. Подраздел должен содержать текст программы на языке программирования С++, реализованный в среде MS Visual Studio 2010.
  • Контрольный тест. Подраздел содержит наборы исходных данных и полученные в ходе выполнения программы результаты.
  • Выводы по лабораторной работе.
  • Ответы на контрольные вопросы.

Контрольные вопросы

  1. В чем принципиальное отличие задач сортировок двумерных и одномерных массивов?
  2. Каким образом оформляется прототип функции, чтобы изменения, выполненные с элементами массива, были сохранены после завершения работы функции?
  3. Приведите возможные обращения к элементу трехмерного массива, аналогичные обращению mas[i][j][k].
  4. В чем причина неудобства использования массивов слишком больших измерений в программах?
  5. При решении каких прикладных задач используются многомерные массивы? Отдельно приведите примеры для массивов с измерением два и более.
< Лекция 14 || Лекция 15: 12 || Лекция 16 >
Денис Курбатов
Денис Курбатов
Владислав Нагорный
Владислав Нагорный

Подскажите, пожалуйста, планируете ли вы возобновление программ высшего образования? Если да, есть ли какие-то примерные сроки?

Спасибо!


( ! ) Warning: include_once(./includes/unicode.entities.inc) [<a href='function.include-once'>function.include-once</a>]: failed to open stream: No such file or directory in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
14.0919102617216watchdog( )../bootstrap.inc:0
24.0925102619680module_invoke( )../bootstrap.inc:967
34.0925102621536call_user_func_array ( )../module.inc:462
44.0925102621872devel_watchdog( )../module.inc:462
54.0927102622720decode_entities( )../devel.module:382
64.0928102624640drupal_error_handler( )../devel.module:340
74.0929102628248watchdog( )../common.inc:663
84.0929102630312module_invoke( )../bootstrap.inc:967
94.0929102632168call_user_func_array ( )../module.inc:462
104.0929102632504devel_watchdog( )../module.inc:462
114.0930102633200decode_entities( )../devel.module:382

( ! ) Warning: include_once() [<a href='function.include'>function.include</a>]: Failed opening './includes/unicode.entities.inc' for inclusion (include_path='.:/usr/local/zend/var/libraries/Zend_Framework_1/default/library:/usr/local/zend/share/pear') in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
14.0919102617216watchdog( )../bootstrap.inc:0
24.0925102619680module_invoke( )../bootstrap.inc:967
34.0925102621536call_user_func_array ( )../module.inc:462
44.0925102621872devel_watchdog( )../module.inc:462
54.0927102622720decode_entities( )../devel.module:382
64.0928102624640drupal_error_handler( )../devel.module:340
74.0929102628248watchdog( )../common.inc:663
84.0929102630312module_invoke( )../bootstrap.inc:967
94.0929102632168call_user_func_array ( )../module.inc:462
104.0929102632504devel_watchdog( )../module.inc:462
114.0930102633200decode_entities( )../devel.module:382

( ! ) Warning: include_once(./includes/unicode.entities.inc) [<a href='function.include-once'>function.include-once</a>]: failed to open stream: No such file or directory in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
14.0919102617216watchdog( )../bootstrap.inc:0
24.0925102619680module_invoke( )../bootstrap.inc:967
34.0925102621536call_user_func_array ( )../module.inc:462
44.0925102621872devel_watchdog( )../module.inc:462
54.0927102622720decode_entities( )../devel.module:382
64.0943102624832drupal_error_handler( )../devel.module:340
74.0943102628520watchdog( )../common.inc:663
84.0943102630584module_invoke( )../bootstrap.inc:967
94.0944102632440call_user_func_array ( )../module.inc:462
104.0944102632776devel_watchdog( )../module.inc:462
114.0945102633552decode_entities( )../devel.module:382

( ! ) Warning: include_once() [<a href='function.include'>function.include</a>]: Failed opening './includes/unicode.entities.inc' for inclusion (include_path='.:/usr/local/zend/var/libraries/Zend_Framework_1/default/library:/usr/local/zend/share/pear') in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
14.0919102617216watchdog( )../bootstrap.inc:0
24.0925102619680module_invoke( )../bootstrap.inc:967
34.0925102621536call_user_func_array ( )../module.inc:462
44.0925102621872devel_watchdog( )../module.inc:462
54.0927102622720decode_entities( )../devel.module:382
64.0943102624832drupal_error_handler( )../devel.module:340
74.0943102628520watchdog( )../common.inc:663
84.0943102630584module_invoke( )../bootstrap.inc:967
94.0944102632440call_user_func_array ( )../module.inc:462
104.0944102632776devel_watchdog( )../module.inc:462
114.0945102633552decode_entities( )../devel.module:382

( ! ) Warning: include_once(./includes/unicode.entities.inc) [<a href='function.include-once'>function.include-once</a>]: failed to open stream: No such file or directory in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
14.0955102617760watchdog( )../bootstrap.inc:0
24.0956102619824module_invoke( )../bootstrap.inc:967
34.0956102621680call_user_func_array ( )../module.inc:462
44.0956102622016devel_watchdog( )../module.inc:462
54.0957102622720decode_entities( )../devel.module:382
64.0957102624640drupal_error_handler( )../devel.module:340
74.0958102628248watchdog( )../common.inc:663
84.0958102630312module_invoke( )../bootstrap.inc:967
94.0958102632168call_user_func_array ( )../module.inc:462
104.0958102632504devel_watchdog( )../module.inc:462
114.0959102633200decode_entities( )../devel.module:382

( ! ) Warning: include_once() [<a href='function.include'>function.include</a>]: Failed opening './includes/unicode.entities.inc' for inclusion (include_path='.:/usr/local/zend/var/libraries/Zend_Framework_1/default/library:/usr/local/zend/share/pear') in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
14.0955102617760watchdog( )../bootstrap.inc:0
24.0956102619824module_invoke( )../bootstrap.inc:967
34.0956102621680call_user_func_array ( )../module.inc:462
44.0956102622016devel_watchdog( )../module.inc:462
54.0957102622720decode_entities( )../devel.module:382
64.0957102624640drupal_error_handler( )../devel.module:340
74.0958102628248watchdog( )../common.inc:663
84.0958102630312module_invoke( )../bootstrap.inc:967
94.0958102632168call_user_func_array ( )../module.inc:462
104.0958102632504devel_watchdog( )../module.inc:462
114.0959102633200decode_entities( )../devel.module:382

( ! ) Warning: include_once(./includes/unicode.entities.inc) [<a href='function.include-once'>function.include-once</a>]: failed to open stream: No such file or directory in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
14.0955102617760watchdog( )../bootstrap.inc:0
24.0956102619824module_invoke( )../bootstrap.inc:967
34.0956102621680call_user_func_array ( )../module.inc:462
44.0956102622016devel_watchdog( )../module.inc:462
54.0957102622720decode_entities( )../devel.module:382
64.0969102624832drupal_error_handler( )../devel.module:340
74.0970102628520watchdog( )../common.inc:663
84.0970102630584module_invoke( )../bootstrap.inc:967
94.0970102632440call_user_func_array ( )../module.inc:462
104.0970102632776devel_watchdog( )../module.inc:462
114.0971102633552decode_entities( )../devel.module:382

( ! ) Warning: include_once() [<a href='function.include'>function.include</a>]: Failed opening './includes/unicode.entities.inc' for inclusion (include_path='.:/usr/local/zend/var/libraries/Zend_Framework_1/default/library:/usr/local/zend/share/pear') in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
14.0955102617760watchdog( )../bootstrap.inc:0
24.0956102619824module_invoke( )../bootstrap.inc:967
34.0956102621680call_user_func_array ( )../module.inc:462
44.0956102622016devel_watchdog( )../module.inc:462
54.0957102622720decode_entities( )../devel.module:382
64.0969102624832drupal_error_handler( )../devel.module:340
74.0970102628520watchdog( )../common.inc:663
84.0970102630584module_invoke( )../bootstrap.inc:967
94.0970102632440call_user_func_array ( )../module.inc:462
104.0970102632776devel_watchdog( )../module.inc:462
114.0971102633552decode_entities( )../devel.module:382