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

Структуры

< Лекция 15 || Лекция 16: 1234 || Лекция 17 >

Лабораторная работа 15. Структуры

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

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

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

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

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

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

  1. Описать переменную "студент", содержащую: имя, фамилию, отчество, название учебного заведения, номер группы. Создать список студентов ( N>10 ). Определить и распечатать фамилии студентов, учащихся заданной группы и заданного учебного заведения.
  2. Задана следующая структура:
    struct point {
                  float x,y;
                 } A, B;
    Описать переменную d, равную расстоянию между точками A и B.
  3. Описать переменную "круг", в которой содержатся все данные для построения круга на плоскости в декартовой системе координат. Определить площадь круга и длину окружности, ограничивающей круг.
  4. Задана следующая структура:
    struct card {
       // масть карт 
       enum {spades, clubs, diamonds, hearts} suit; 
       // достоинство карт 
       enum{six, seven, eight, nine, ten, jack, queen, king, ace} value;
       } c1, c2;
    Описать логическую функцию Kick(с1, с2, сs), проверяющую, бьёт ли карта с1 карту с2, с учётом того, что масть cs является козырной.

    Описать переменную "адрес", содержащую: название города, название улицы, номер дома, корпус, номер квартиры. Создать массив адресов. Поменять местами номер дома в N -ом адресе и номер квартиры в M -ом адресе.

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

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

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

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

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

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

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

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

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

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

Спасибо!

Андрей Садовщиков
Андрей Садовщиков
Россия