Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /home/studb20/public_html/index.php on line 4
 1.13.2 Масиви структур - Програмування С, С++теорія та практика (частина 1) - Studbook

Програмування С, С++теорія та практика (частина 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) ;

}

 

66