Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Загальна характеристика структуриСодержание книги
Поиск на нашем сайте
Структури дають можливість групувати дані і працювати з цими даними як із єдиним цілим. Структура являє собою множину, що складається з декількох значень, кожна з який може мати свій тип даних. Елементи структур можуть мати різні типи даних. Для визначення структури використовується синтаксис:
struct [тег структури] {
визначення члена структури; } [одна або декілька змінних-структур];
тег -ім’я структури.
Приклад структури з інформацією про компакт-диски:
struct cd_info { char title [25]; //назва char artist [28]; //виконавець int num_song; //число пісень float price; //вартість char date_bought [8]; //дата покупки } cd1, cd2, cd3;
Тут описані три структурні змінні: cd1, cd2, cd3; Існує два засоби ініціалізації структур: – при оголошенні; – окремо в тілі програми.
Приклад 1. Ініціалізація при оголошенні
struct cd_info { char title[25]; char artist[28]; int num_song; float price; char date_bought[8];
} cd1= { “Red Moon Men”, “Пугачова”, 12, 20.55, “02/13/98” };
Приклад 2. Присвоювання в тілі програми.
#include <iostream.h> #include <string.h>
Void main() { struct cd_info { char title [25]; char artist [28]; int num_song; float price; char date_bought [8]; } cd1;
strcpy(cd1.title, “Red Moon Men”); cd1.num_song = 12; cd1.price = 11.95; strcpy(cd1.artist, “Пугачова”); cout << “Title: “ << cd1.title << “\n”; cout << “Artist: “ << cd1.artist << “\n”; cout << “Number of songs: “ << cd1.num_song << “\n”; cout << “Price: “ << cd1.price << “\n”; }
Як очевидно з прикладу до полів структури можна звертатися, вказуючи ім’я змінної-структури, ім’я поля і розділяючи ці імена точкою. У загальному вигляді:
Struct bb { int field_1; char field_2; } c, a; int value1 = c. field_1; char value2 = a. field_2;
Якщо змінна ptr визначена як вказівка на структуру, то для доступу до полів структури можна використовувати операцію ->. Наприклад:
bb *ptr; int value1 = ptr->field_1; char value2 = ptr->field_2;
Оператор ptr->field_1 еквівалентний виразу (*ptr).field_1.
Приклад:
#define COMPLEX struct complex_type
COMPLEX { float real; float image; };
Операція додавання С1 і С2 для одержання С3.
#define COMPLEX struct complex_type
COMPLEX { float real; float image; }; COMPLEX C1, C2, C3; C3. real = C1. real + C2. real; C3. image = C1. image + C2. image; або COMPLEX* C1, C2, C3; C3->real = C1->real + C2->real; C3->image = C1->image + C2->image; Структури можуть бути вкладеними, тобто одним із полів структури може бути інша структура. Приклад: #include <iostream.h> struct address_info { char addr[25]; //Інформація про адресу char state[20]; }; Struct add { char name[25]; address_info *address; double zarp; };
Void main() { add t; cin >> t.zarp; cin >>t.name; cin >>t.address->state; cin >>t.address->addr; } Вкладена структура має вигляд: Резюме: Структури дозволяють групувати дані більш гнучкою образом, ніж масиви. Вони можуть містити елементи різноманітних типів даних. Ініціалізувати структури можна двома засобами: під час оголошення, або за допомогою операторів «точка»(.) або " ->" у тілі програми. Структури аналогічні записам бази даних, а їхні елементи - полям записів.
Масиви структур Припустимо, що ви працюєте в компанії замовлення поштою, що продає дисководи. Перед Вами стоїть задача написати програму для обліку 25 видів пристроїв. По дисководу є така інформація: – місткість пристрою, що запам’ятовує; – час доступу в мілісекундах; – код постачальника; – ціна. Дані зручно розмістити в масиві структур
struct inf_d { long int ob; int vr; int kod; double cena; } drive[25];
або окремим рядком:
inf_d drive[25];
Структури зручно записувати на диск (спробуйте самостійно)
Приклад:
#include <iostream.h> #include <stdio.h> #include <stdlib.h> #include <conio.h>
struct inf_d //Глобальне визначення { long int ob; int vr; int kod; double cena; };
inf_d v_dan() { inf_d disk; cin >> disk.ob; cin >> disk.vr; cin >> disk.kod; cin >> disk.cena; return disk; }
Void menu() { clrscr(); //(у Visual C++ використовується system("cls")) cout << "1. введення даних про дисковод\n"; cout << "2. Відображення даних\n"; cout << "3. Вихід\n"; } void pros(inf_d disk[25], int num) { for(int ctr = 0; ctr < num; ctr++) { cout <<"\n" << disk[ctr].ob; cout <<"\n" << disk[ctr].vr; cout <<"\n" << disk[ctr].kod; cout <<"\n" << disk[ctr].cena<<"\n"; } getch(); }
Void main () { inf_d disk[25]; int ans; int num = 0; do { do { menu(); cin >> ans; } while ((ans < 1) || (ans>3));
switch(ans) { case 1: disk[num] = v_dan(); num++; break; case 2: pros(disk,num); break; default: break; } } while(ans!=3); }
|
||||||
Последнее изменение этой страницы: 2017-02-10; просмотров: 163; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.137.175.166 (0.006 с.) |