Програмування С, С++теорія та практика (частина 1)
1.13.2 Масиви структур
Як і звичайними масивами простих типів, так само можна оперувати масивами структур, елементи якого мають структурований тип. Розглянемо наочний зразок, який ілюструє оголошення масиву структур:
■Ьурейе£ зїгисї Ба£е {
іп£ й; /* день */ іп£ т; /* місяць */ іп£ у; /* рік */
} Ба£е;
Ба£е агг[100];
Вище було оголошено масив агг, що складається із 100 елементів, кожний з яких має тип Баїа. Кожний елемент масиву - це окрема змінна типу Баїа, що складається із трьох цілих елементів - й, т, у.
Доступ до полів структури аналогічний доступу до звичайних змінних, плюс використання індексу номеру елементу у квадратних дужках:
агг[25].Й=2 4; агг[12].т=12;
Запропонуємо програму, в якій реалізується концепція
структурованого типу Баїа. Окремими функціями реалізуємо ініціалізацію елементів структури, додавання нового значення, виведення дати на екран, визначення високосного року.
#іпс1ийе<з'Ьйіо. Ь>
#іпс1ийе<сопіо.Ь>
£уреЙе£ зїгисї Ба£е {
іп£ Й; /* день */ іп£ т; /* місяць */ іп£ у; /* рік */
} Ба£е;
Vоій зе'Ь_йа'Ье_агг(Ба'Ье *агг,Ба'Ье Vа1ие,іп^ п)
{
іп£ і ;
£ог (і=0;і<п;і++)
{
агг[і].й=Vа1ие.Й; агг[і].т=Vа1ие.т; агг[і].у=Vа1ие.у;
}
}
Vоій ргіп'Ь_Йа'Ье_агг(Ба'Ье *агг,іп'Ь п)
{
іп£ і ;
£ог (і=0;і<п;і++)
{
ргіп^£("%Й.%Й.%Й\п",агг[і].Й,агг[і].т,агг[і].у);
}
}
Vоій ргіп^_Йа^е(Ба£е &Й)
/* виведення на екран дати */
{
ргіп^£("%Й.%Й.%Й\п",Й.Й,Й.т,Й.у);
}
Vоій іпі^_Йа^е(Ба^е &Й,іп£ йй,іп£ тт,іп^ уу)
/* ініціалізація структури типу Ба£е */
{
й.й=йй;
Й.т=тт;
Й.у=уу;
}
іп£ 1еаруеаг(іп£ уу)
/* визначення, чи високосний рік */ {
і£ ((уу%4==0&&уу%100!=0)||(уу%400==0)) ге'Ьигп 1; е1зе ге'Ьигп 0;
}
Vоій аЙЙ_уеаг(Ба^е &й,іп£ уу)
/* додати уу років до дати */ { й.у+=уу;
}
Vоій айй_топ'ЬЬ(Ба'Ье &й,іп£ тт)
/* додати тт місяців до дати */ {
Й.т+=тт; і£ (Й.т>12)
{
й.у+=й.т/12; й.т=й.т%12;
}
}
Vоій айй_йау(Ба£е &й,іп£ йй)
/* додати йй днів до дати */ { іп£ Йауз[]={31,28,31,30,31,30,31,31,30,31,30,31}; й.й+=йй;
і£ (1еаруеаг(й.у)) Йауз[1]=29; мЬі1е ((й.й>йауз[й.т-1]))
{
і£ (1еаруеаг(й.у)) Йауз[1]=29;
е1зе Йауз[1]=28; й.й-=йауз[й.т-1];
Й.т++;
і£ (й.т>12)
{
й.у+=й.т%12; й.т=й.т/12 ;
}
}
}
Vоій таіп ^оій)
{
Ба£е йа^е1,йа£е2;
Ба£е аггау[10]={{12,11,1980},{15,1,1982},{8,6,1985}, {8,8,1993},{20,12,2002},{10,1,2003}};
с1гзсг() ;
іпі'Ь_йа'Ье(йа'Ье1,15,12,2002); айй_йау(йа£е1,16); ргіп^_йа^е(йа£е1); ри£з("");
іпі'Ь_йа'Ье(йа'Ье2,1,1,2003) ; айй_топ^Ь(йа£е2,10); ргіп'Ь_йа'Ье(йа'Ье2); ри£з("") ;
ргіп'Ь_йа'Ье_агг(аггау ,6) ;
}
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
Схожі підручники
- Мне тебя обещали (онлайн)
- Методичні вказівки до виконання практичного заняття на тему «Графічний метод розв’язку задач НЛП» Розв’язати графічним методом задачу НЛП
- Сказка про Весельчака
- Історія України основні теми
- Мікро економіка. Супровід лекцій
- НАВЧАЛЬНО-МЕТОДИЧНИЙ КОМПЛЕКС ДИСЦИПЛІНИ «ГРОШІ І КРЕДИТ»
