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

Структуры и указатели

< Лекция 16 || Лекция 17: 123 || Лекция 18 >

Лабораторная работа 16. Структуры и указатели.

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

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

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

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

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

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

  1. Разработайте структуру, содержащую сведения о результатах ЕГЭ по предмету: Фамилия, Имя, Отчество, Число баллов по первому предмету, Число баллов по второму предмету, Число баллов по третьему предмету. Разработайте функцию, определяющую результат поступления абитуриента по заданному проходному баллу. Введите сведения об N абитуриентах и выведите результаты зачисления по образцу (данные, введенные пользователем, выделены жирным шрифтом):
    Введите проходной балл на специальность: 255
    Введите количество абитуриентов: 5
    
    Сведения о 1 абитуриенте
    Фамилия: Петров
    Имя: Федор
    Отчество: Степанович
    Число баллов по первому предмету: 84
    Число баллов по второму предмету: 76
    Число баллов по третьему предмету: 95
    Результат: зачислен
    ...
  2. Разработайте структуру, описывающую комплексное число. Разработайте функции, выполняющие с комплексными числами четыре арифметические операции (+, -, *, /). Введите два комплексных числа и знак операции. Выведите результат.
  3. Разработайте структуры, определяющие положение точки в декартовой и полярной системе координат. Опишите функцию, преобразующую координаты точки на плоскости из полярных в декартовы. Введите точку в полярных координатах, преобразуйте координаты в декартовы.

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

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

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

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

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

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

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

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

  1. Какие данные о структуре содержит указатель на эту структуру?
  2. Какие ограничения накладываются на тип элемента структуры?
  3. Возможно ли в качестве типа элемента структуры использовать указатель на другую структуру?
  4. Как выполняется инициализация указателя на структуру?
  5. Как выполняются операции инкремента и декремента над указателями на структуры?
  6. Какими способами можно обратиться к данным структуры, используя указатели?
  7. Каким образом необходимо передать структуру в качестве параметра функции, чтобы сохранить изменения, совершаемые функцией с данной структурой?
  8. Что возвращается в качестве значения функции, тип которой объявлен как структура?
  9. Что возвращается в качестве значения функции, тип которой объявлен как указатель на структуру?
< Лекция 16 || Лекция 17: 123 || Лекция 18 >
Денис Курбатов
Денис Курбатов
Владислав Нагорный
Владислав Нагорный

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

Спасибо!

Ольга Замятина
Ольга Замятина
Россия, Калиниград, РГУ им. И. Канта, 2009
Эдуард Санин
Эдуард Санин
Украина, Харьков, ХАИ