Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Контакти
 


Тлумачний словник
Авто
Автоматизація
Архітектура
Астрономія
Аудит
Біологія
Будівництво
Бухгалтерія
Винахідництво
Виробництво
Військова справа
Генетика
Географія
Геологія
Господарство
Держава
Дім
Екологія
Економетрика
Економіка
Електроніка
Журналістика та ЗМІ
Зв'язок
Іноземні мови
Інформатика
Історія
Комп'ютери
Креслення
Кулінарія
Культура
Лексикологія
Література
Логіка
Маркетинг
Математика
Машинобудування
Медицина
Менеджмент
Метали і Зварювання
Механіка
Мистецтво
Музика
Населення
Освіта
Охорона безпеки життя
Охорона Праці
Педагогіка
Політика
Право
Програмування
Промисловість
Психологія
Радіо
Регилия
Соціологія
Спорт
Стандартизація
Технології
Торгівля
Туризм
Фізика
Фізіологія
Філософія
Фінанси
Хімія
Юриспунденкция






Масиви структур

Розширимо програму “книжка”, щоб вона могла обробляти 10 книг.

#include <iostream.h>

#define maxnazva 41 /*максимальна довжина заголовка*/

#define maxavtor 31 /*максимальна довжина імені автора*/

#define maxbk 10 /*максималька кількість книг*/

struct book {

char nazva[maxnazva];

char avtor[maxavtor];

float cina;

};

main()

{

struct book libry[maxbk];

int c=0;

int i;

сout<<“введіть назву книги\n”;

cin.get(odna.nazva,maxnazva); cin.get();

while (c< maxbk && gets(libry[c].nazva)!=null

&& libry[c].nazva[0]!=’\0’)

{

cout<<“введіть автора\n”;

cin.get(odna.avtor,maxavtor); cin.get();

cout<<“введіть ціну\n”;

cin>>odna.cina;

while (getch()!=‘\n’)

continue;/*знищення стрічки вводу*/

if (c< maxbk)

cout<<“введіть наступну книгу\n”;

}

cout<<“тепер виведемо список книг.\n”;

for (I=0;I<c;I++)

cout<<libry[i].avtor<< libry[i].nazva<< libry[i].cina;

return 0;

}

Спочатку розглянемо опис масиву структур і доступ до окремих елементів.

Опис масиву структур подібний до опису будь-якого іншого масиву.

 

struct book libry[maxbk];

Тут описується масив libry з елементами maxbk. Кожний елемент цього масиву є структурою book. Таким чином, libry[0] -одна структура типу book, libry[1]- друга структура і т.д. Це показано на рисунку

nazva avtor cina

Libry[0] libry[0].nazva libry[0].avtor libry[0].cina
       
Libry[1] libry[1].nazva libry[1].avtor libry[1].cina
       
Libry[2] libry[2].nazva libry[2].avtor libry[2].cina
. .   .
. .   .
. .   .
Libry[9] libry[9].nazva libry[9].avtor libry[9].cina

 

Рис.Масиви структур.

 

Для ідентифікації елементів масиву структур застосовується теж правило, що і для ідентифікації окремих структур: після імені структури йде крапка, а потім ім’я єлемента.

libry[0].nazva /*елемент структури cina зв’язаний з першим елементом масиву*/

libry[9].cina /*елемент структури cina зв’язаний з десятим елементом масиву*/

Треба звернути увагу на те, що індекс масиву приєднаний до імені libry, а не до закінчення повного імені.

libry[0].nazva /*правильно*/

libry.cina[9] /*неправильно*/

Пояснемо, що означає запис libry[2].cina[4]. Це п’ятий символ елемента cina (частина cina[4])елемента типу book ,описаного третьою структурою (libry[2]).

В програмі рядок while (c< maxbk && gets(libry[c].nazva)!=null

&& libry[c].nazva[0]!=’\0’) трактується так:

gets(libry[c].nazva)-задає зчитування стрічки назви книги. Коли ця функція захоче читати після символа кінця файла, вираз приймає значення null.Вираз libry[c].nazva[0]!=’\0’ перевіряє чи не перший символ стрічки нульовим. Це би означало, що стрічка пуста. Рядок while (getch()!=‘\n’) continue;/*знищення стрічки вводу*/ компенсує недоліки функції scanf() і переводить введений результат на нову стрічку.

 


Читайте також:

  1. III. Географічна структура світового ринку позичкового капіталу
  2. III. Процедура встановлення категорій об’єктам туристичної інфраструктури
  3. ISO 15504. Призначення і структура стандарту
  4. ISO 15504.Структура еталонної моделі
  5. IV. Закономірності структурно-функціональної організації спинного мозку
  6. IY.3. Общество и его структура.
  7. VІ. План та організаційна структура заняття
  8. VІ. Структурно-логічні схеми
  9. А) Структура економічних відносин.
  10. А. Структурно-функціональна класифікація нирок залежно від ступеню злиття окремих нирочок у компактний орган.
  11. Агропромисловий комплекс та його структура
  12. Адаптація організаційної структури до стратегії




Переглядів: 623

<== попередня сторінка | наступна сторінка ==>
Доступ до елементів структур | Вкладені структури.

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

 

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.006 сек.