48491 (566521)

Файл №566521 48491 (Работа со структурами в языке программирования Си++)48491 (566521)2016-07-28СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла

Лабораторная работа №6

Работа со структурами в языке программирования Си++”

Цель работы: познакомиться с понятием структуры и структурной переменной. Научиться создавать массивы структур и работать со вложенными структурами.

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

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

Структуры удобно использовать там, где разнообразные данные, относящиеся к одному и тому же объекту, необходимо объединять. Например, ученика средней школы характеризуют следующие данные: фамилия, имя, дата рождения, класс, возраст.

Объявление структуры осуществляется с помощью ключевого слова struct, за которым следует ее тип, список элементов, заключенных в фигурные скобки. Ее можно представить в следующем общем виде:

struct тип {тип элемента 1 имя элемента 1;

тип элемента n имя элемента n; };

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

Например:

struct date { int day;

int month;

int year;} ;

Русские буквы использовать в идентификаторе в языке СИ нельзя.

Следом за фигурной скобкой, заканчивающей список элементов, могут записываться переменные данного типа, например:

struct date {…} a, b, c;

При этом выделяется соответствующая память.

Выведенное имя типа можно использовать для объявления записи, например: struct date day;. Теперь переменная day имеет тип date.

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

Например:

struct УЧЕНИК { char Фамилия [15];

имя [15];

struct DATA ДАТА РОЖДЕНИЯ;

int класс, возраст;};

Определенный выше тип DATA включает три элемента: День, Месяц, Год, содержащие целые значения (int). Запись УЧЕНИК включает элементы: ФАМИЛИЯ [15]; ИМЯ[15]; ДАТА РОЖДЕНИЯ, КЛАСС, ВОЗРАСТ. ФАМИЛИЯ [15] и ИМЯ [15] – это символьные массивы из 15 компонент каждый. Переменная ДАТА РОЖДЕНИЯ представлена составным элементом (вложенной структурой) ДАТА. Каждой дате рождения соответствуют день месяца, месяц и год. Элементы КЛАСС и ВОЗРАСТ содержат значения целого типа (int). После введения типов ДАТА и УЧЕНИК можно объявить переменные, значения которых принадлежат этим типам.

Например:

struct УЧЕНИК УЧЕНИКИ [50];

массив УЧЕНИКИ состоит из 50 элементов типа УЧЕНИК.

В языке СИ разрешено использовать массивы структуры; записи могут состоять из массивов и других записей.

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

Например:

Ученики [1]. КЛАСС = 3;

Ученики [1]. ДАТА РОЖДЕНИЯ. ДЕНЬ=5;

Ученики [1]. ДАТА РОЖДЕНИЯ. МЕСЯЦ=4;

Ученики [1]. ДАТА РОЖДЕНИЯ. ГОД=1979;

Первая строка указывает, что 1-й ученик учится в третьем классе, а последующие строки – его дату рождения: 5.04.79.

Каждый тип элемента структуры определяется соответствующей строкой объявления в фигурных скобках. Например, массив УЧЕНИКИ имеет тип УЧЕНИК, год является целым числом. Так как каждый элемент записи относится к определенному типу, его составное имя может появляться везде, где разрешено использовать значение этого типа. Рассмотрим пример программы:

/* Демонстрация записи */

#include

struct computer { int mem;

int sp;

char model [20]; };

/* Объявление записи типа computer, состоящей из трех элементов: mem, sp, model */

struct computer pibm =

{512, 1, “ПЭВМ ЕС 1840.05”}

/* Объявление и инициализация переменной pibm типа computer */

main ( )

{ printf (“ персональная ЭВМ % s\n\n “, pibm.model);

printf ( “объем оперативной памяти - % d К байт \n”, pibm.mem);

printf (“производительность - % d млн. операций в секунду \n”, pibm.sp);

/* вывод на экран значений элементов структуры */

}

В данной программе объявляется запись computer, которая состоит из трех элементов: mem (память ЭВМ), sp (быстродействие), model [20] (модель ПЭВМ). Переменная pibm имеет тип computer и является глобальной. Строки pibm.model, pibm.mem, pibm. sp в операторе printf вызывают обращение к соответствующим элементам записи pibm типа computer, которым ранее были присвоены определенные значения.

Результат работы программы имеет вид:

персональная ЭВМ ПЭВМ ЕС 1840.05

объем оперативной памяти – 512 К байт

производительность – 1 млн. операций в секунду

Рассмотрим использование в программе вложенных структур:

/* Демонстрация вложенных структур*/

# include

struct date { int day;

int month;

int year; };

/* Объявление записи типа date*/

struct person { char fam [20];

char im [20];

char ot [20];

struct date f1;};

/* Объявление структуры типа person; одним из элементов записи person является запись f1

типа date */

main ( )

{ struct person ind1;

/* обьявление переменной ind1 типа person */

printf ( “Укажите фамилию, имя, отчество, день, \n месяц”

“ и год рождения гражданина ind1\n”);

scanf (“ % S % S % S %d %d”, &ind1.fam, &ind1.im, &ind1.ot,

& ind1.f1.day, &ind1.f1.month, &ind1.f1.year );

/* Ввод сведений о гражданине ind1 */

printf (“ Фамилия, имя, отчество: % S % S % S \n”, ind1.fam, ind1.im, ind1.ot);

printf (“ Год рождения - % d \n”, ind1.f1.year);

printf (“ Месяц рождения - % d -й \n”, ind1.f1.month);

printf (“ День рождения - % d -й \n”, ind1.f1.day);

/* Вывод сведений о гражданине ind1 */

}

Структура типа date ( дата) содержит три элемента: day (день), month (месяц), year (год). Структура типа person (человек) содержит четыре элемента: fam[20] (фамилия), im[20] (имя) , ot[20] (отчество), f1 (дата рождения). Последний из них (f1) – это вложенная запись типа date.

Результаты работы программы:

Укажите фамилию, имя, отчество, день, месяц и год рождения гражданина ind1

Алексеев

Сергей

Петрович

3

5

1978

Подчеркнутая информация вводится пользователем.

Сведения о гражданине ind1

Фамилия, имя, отчество: Алексеев Сергей Петрович

Год рождения – 1978

Месяц рождения – 5-й

День рождения – 3-й

В следующей программе рассмотрим использование структуры в виде элементов массива pibm. Каждый элемент состоит из следующих компонентов: mem (память), sp (объем винчестера), model [20] (модель ПЭВМ):

/* Массивы записей */

#include

struct computer { int mem, sp;

char model [20];

pibm [10];};

/* объявление записи типа computer;

объявление массива pibm типа computer */

main ( )

{ int i, j, k, priz;

for ( i=0; i<10; i++)

{ printf (“Введите сведения о ПЭВМ %d и признак (0-конец;

\n другая цифра- продолжение)\n”, i);

printf (“ модель ПЭВМ - ”);

scanf (“%S”, &pibm [i].model );

printf ( “объем оперативной памяти -”);

scanf (“%d”, &pibm[i].mem);

printf (“ объем винчестера - ”);

scanf ( “%d , &pibm[i].sp ”);

printf (“признак - ”);

scanf (“ %d ”, &priz );

k=i;

if (!priz) break; }

/* Здесь !priz – операция отрицания priz; break – выход из цикла for, если priz=0 */

for (i=0; i<10, i++);

{

printf ( “\n О какой ПЭВМ Вы хотите получить сведения?\n (Введите номер от 0 до 9)\n” );

scanf ( “%d ”,&j );

if (j>k)

{ printf (“Нет сведений об этой ПЭВМ \n”);

continue; }

printf (“ персональная ЭВМ %s\n ”, pibm[j].model);

printf (“объем оперативной памяти - % d Мб \n ”, pibm[j].mem);

printf (“объем винчестера - % d Мб \n ”, pibm[j].sp);

printf (“ признак – “ );

scanf ( “ %d ”, &priz);

if (!priz) break; }

/* Ввод сведений о ПЭВМ и занесение в массив pibm записей типа computer (первый цикл for); вывод на экран сведений о ПЭВМ (второй цикл for) */

}

Результаты работы программы:

Введите сведения о ПЭВМ и признак (0-конец; другая цифра – продолжение)

модель ПЭВМ – АТ 486 SX

объем оперативной памяти – 32

объем винчестера – 4 Гбайта

признак – 1

Введите сведения о ПЭВМ и признак (0-конец; другая цифра – продолжение)

модель ПЭВМ – АТ 386 DX

объем оперативной памяти – 64

объем винчестера – 14 Гбайт

признак – 0

О какой ПЭВМ Вы хотите получить сведения? (Введитн номер от 0 до 9)

1

модель ПЭВМ – АТ 386 DX

объем оперативной памяти – 16 Мб

объем винчестера – 2,5 Гбайт

признак – 0

  1. Задание

Из таблицы взять задание по варианту и написать программу.

  1. Содержание отчета

Отчет должен содержать:

  1. задание к работе;

  2. программу;

  3. результаты расчетов.

№ вар.

Задание

1

Опишите запись СТУДЕНТ и поместите в нее следующую информацию: Ф.И.О., оценки (математика, физика, черчение, химия, сопромат). Определите, сколько студентов имеют неудовлетворительную оценку по математике.

2

Воспользовавшись записью СТУДЕНТ из варианта №1, определите, сколько студентов имеют неудовлетворительную оценку хотя бы по одному предмету.

3

Воспользовавшись записью СТУДЕНТ из варианта №1, определите, сколько студентов сдали все экзамены на 5.

4

Воспользовавшись записью СТУДЕНТ из варианта №1, определите средний балл группы по физике.

5

Воспользовавшись записью СТУДЕНТ из варианта №1, определите количество отличных оценок, полученных группой по всем предметам.

6

Воспользовавшись записью СТУДЕНТ из варианта №1, определите, сколько студентов имеют средний балл от 4 до 5.

7

Воспользовавшись записью СТУДЕНТ из варианта №1, определите, какое количество неудовлетворительных оценок получено по всем предметам.

8

Воспользовавшись записью СТУДЕНТ из варианта №1, определите, какой из предметов был сдан группой лучше всего.

9

Воспользовавшись записью СТУДЕНТ из варианта №1, определите, сколько студентов не имеют задолженностей.

10

Опишите запись АНКЕТА и поместите в нее следующую информацию: Ф.И.О.(фамилия, имя, отчество), адрес (улица, номер дома, номер квартиры), пол, возраст. Определите, сколько лиц женского и сколько мужского пола проживают в одном доме.

11

Воспользовавшись записью АНКЕТА из варианта №10, определите, сколько лиц мужского пола в возрасте старше 18 лет и младше 60 проживают на одной улице.

12

Воспользовавшись записью АНКЕТА из варианта №10, определите, сколько лиц женского пола в возрасте старше 30 лет проживают в одном доме.

13

Воспользовавшись записью АНКЕТА из варианта №10, определите, сколько детей до 7 лет проживают на одной улице.

14

Воспользовавшись записью АНКЕТА из варианта №10, определите, сколько лиц мужского пола и женского в возрасте до 50 лет проживают на одной улице.

15

Воспользовавшись записью АНКЕТА из варианта №10, определите, сколько детей от 1 года до 5 проживают в одном доме.

16

Опишите запись ТРАНСПОРТ и поместите в нее следующую информацию: Ф.И.О. (фамилия, имя, отчество пассажира), багаж (количество вещей, вес в кг). Определить число пассажиров, вес багажа которых превышает 30 кг.

17

Воспользовавшись записью ТРАНСПОРТ из варианта №16, определите, имеется ли пассажир, багаж которого состоит из одной вещи весом в 20 кг.

18

Воспользовавшись записью ТРАНСПОРТ из варианта №16, определите средний вес багажа.

19

Воспользовавшись записью ТРАНСПОРТ из варианта №16, определите количество пассажиров, вес багажа которых превосходит средний.

20

Воспользовавшись записью ТРАНСПОРТ из варианта №16, определите количество пассажиров, имеющих более трех вещей.

Литература

  1. Подбельский В.В. Язык Cu ++: Учебное пособие. - М.: Финансы и статистика,1995, - 560 с.

  1. Страуструп Б. Язык программирования Сг ++. - М.: Радио и связь, 1991. - 352 стр.

  2. Собоцинский В.В. Практический курс Turbo Cu ++. Основы объктно- ориентированного программирования. - М.: Свет, 1993. - 236 с.

  3. Романов В.Ю. Программирование на языке Cu ++. Практический подход. - М.: Компьтер, 1993. - 160 с.

  4. Уинер Р. Язык турбо Cu . - М.: Мир, 1991. - 384 с.

  5. Юлин В.А., Булатова И.Р. Приглашение к Cu. - Мн.: Высш. Шк., 1990,- 224 с.

  6. Котлинская Г.П., Галиновский О.И. Программирование на языке Cu. -Мн.: Высш. Шк., 1991. - 156 с.

Характеристики

Тип файла
Документ
Размер
111,82 Kb
Тип материала
Учебное заведение
Неизвестно

Тип файла документ

Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.

Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.

Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.

Список файлов лабораторной работы

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
7027
Авторов
на СтудИзбе
260
Средний доход
с одного платного файла
Обучение Подробнее