Робота зі структурами в мові програмування Сі

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Лабораторна робота № 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 <stdio.h>

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 <stdio.h>

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 <stdio.h>

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 с.

  2. Страуструп Б. Мова програмування Сг + +. - М.: Радіо і зв'язок, 1991. - 352 стор

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

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

  5. Уінер Р. Мова турбо Cu. - М.: Світ, 1991. - 384 с.

  6. Юлін В.А., Булатова І.Р. Запрошення до Cu. - Мн.: Вищ. Шк., 1990, - 224 с.

  7. Котлинського Г.П., Галиновський О.І. Програмування на мові Cu. -Мн.: Вищ. Шк., 1991. - 156 с.

Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Лабораторна робота
45.8кб. | скачати


Схожі роботи:
Робота з функціями в мові програмування Сі
Програмування на мові С
Програмування на мові Сі
Програмування на мові Асемблер
Масиви та покажчики в мові програмування Сі
Оператори циклу у мові програмування Сі
Програмування на алгоритмічній мові Бейсік
Логічні задачі на мові програмування Prolog
Оператори введення і виведення в мові програмування Сі
© Усі права захищені
написати до нас