Опубликован: 02.02.2011 | Доступ: свободный | Студентов: 3381 / 990 | Оценка: 4.43 / 3.57 | Длительность: 33:06:00
Специальности: Программист
Лекция 29:

Динамические структуры данных

< Лекция 28 || Лекция 29: 123 || Лекция 30 >

Лабораторная работа 28. Динамические структуры данных

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

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

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

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

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

Выполните приведенные ниже задания.

  1. Разработайте динамическую структуру для решения задачи. Последовательность чисел Фибоначчи задается по закономерности: f1 = 1, f2 = 1, ..., fn = fn-1 + fn-2. Распечатайте n чисел Фибоначчи в следующем порядке: сначала все четные, затем все нечетные элементы.
  2. Разработайте динамическую структуру для решения задачи. Даны целые числа p и q. Получить все делители числа q, взаимно простые с числом p.
  3. Разработайте динамическую структуру для решения задачи. Дана последовательность из n целых чисел. Получите количество чисел последовательности, которые встречаются в ней ровно один раз. Распечатайте найденные числа.
  4. Разработайте динамическую структуру для решения задачи. На шахматной доске каждая клетка описывается двумя координатами: номером строки и номером столбца. Ферзь ставится на одну из клеток. Найдите количество и координаты всех клеток, которые "бьет" ферзь.

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

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

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

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

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

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

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

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

  1. Почему в программах размер памяти под статические переменные должен быть определен на этапе компиляции?
  2. За счет каких ресурсов выделяется память под динамические структуры?
  3. Почему динамические структуры не требуют собственного описания в программе?
  4. Как располагаются в памяти динамические величины?
  5. Как осуществляется доступ к динамическим структурам из программного кода?
  6. Как связываются между собой элементы динамической структуры?
  7. В чем основное отличие смежного и связного представления данных?
  8. Какого типа может быть поле данных в динамической структуре?
  9. Почему для обращения к динамической структуре достаточно хранить в памяти адрес ее первого элемента?
  10. За счет чего работа с динамическими данными замедляет выполнение программы?
< Лекция 28 || Лекция 29: 123 || Лекция 30 >
Денис Курбатов
Денис Курбатов
Владислав Нагорный
Владислав Нагорный

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

Спасибо!