Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа_№7С++.doc
Скачиваний:
8
Добавлен:
15.11.2019
Размер:
161.79 Кб
Скачать

10

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

Самарский государственный технический университет

Филиал в г. Сызрани

Кафедра электротехники, информатики и компьютерных технологий

ПРОГРАММИРОВАНИЕ

С ИСПОЛЬЗОВАНИЕМ СТРУКТУР

Методические указания к лабораторной работе № 7

по дисциплине "Программирование и основы алгоритмизации"

Составитель: Будин В.И.

Утверждено на заседании кафедры электротехники, информатики и компьютерных технологий 30.01.03.

СЫЗРАНЬ 2003

Лабораторная работа №7 программирование с использованием структур

Цель работы: закрепление теоретических знаний и приобретение практических навыков по составлению программ с использованием структур и их отладке в интегрированной среде Borland C++5.

Общие сведения о структурах

Структура – это объединенное в единое целое множество поименованных элементов в общем случае разных типов (переменных, массивов, указателей, структур и т. д.)

Определение структуры в общем случае имеет следующий вид:

struct [имя_типа_структуры]

{тип_1 элемент_1;

тип_2 элемент_2;

. . . . . . . . . . .

тип_N элемент_N;

} [список_имен_структур];

где struct – служебное (ключевое) слово; [·] – необязательный параметр.

Элементы структуры называются полями структуры и могут иметь любой тип, кроме типа этой же структуры, но могут быть указателями на него. Если список_имен_структур отсутствует, то имя_типа_структуры опускать нельзя и наоборот. После закрывающей фигурной скобки структуры обязательно ставится точка с запятой.

Пример структуры библиографической карточки.

struct card //card – тип структуры

{char *author; //author – Ф.И.О. автора

char *title; //title – заголовок книги

char *city; //city – место издания

char *firm; //firm – издательство

int year; //year – год издания

int pages; //pages – количество страниц

}; //список_имен_структур опущен

Далее тип структуры можно использовать для определения конкретных объектов.

Например:

card rec1, rec2, rec3; //reci – имена структур типа card

Если структура используется однократно, то объекты определяются без имени типа.

Например:

struct {char N[12];

int value;

} XX, XY, EE[8], *pst;

Для обращения к полям структур используются расширенные (составные, уточненные) имена:

Имя_структуры . Имя_элемента_структуры

При этом с полями структур можно выполнять любые операции, применимые к типу этих полей.

Например:

XY . N[0]=37; //присваивание поля N[0] структуры XY

cin >> EE[3] . value; //ввод значения поля value структуры EE[3]

При определении структур возможна инициализация, т.е. задание начальных значений их элементов.

Например:

card dictionary=

{"Подбельский В.В.", "Язык Си ++", "М.",

"Финансы и статистика", 1999, 560};

При инициализации массивов структур каждый элемент массива заключается в фигурные скобки.

Например:

struct complex {float real, im;} comple [2] [3]=

{{{1,1}, {1,1}, {1,1}}, {{2,2}, {2,2}, {2,2}}};

Для структур одного и того же типа определена операция присваивания. При этом происходит поэлементное копирование полей структур.

Например:

XY=EE[3]; //предполагается, что структура EE[3] уже инициализирована

XX=XY;

Структуру можно передавать в функцию и возвращать в качестве значения функции по правилам, определенным для работы с функциями.

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

а) по алфавиту наименования товара;

б) по убыванию цены товара;

в) по убыванию числа единиц товара.

Вывести отсортированный список на печать.