142
int age;
// жасы
float salary;
// жалақысы
unsigned employee_number; // қызметкердің реттік нөмірі
} staff[50], *ps; /* бұл құрылымды жариялаудан кейінгі
айнымалыларды анықтау */
Қҧрылымдар типіндегі айнымалыларды сипаттау екі жолмен жҥзеге
асырылады. Алғашқы тәсіл:
struct Shape { /* фигуралар */
int type;
// 0 - шеңбер, 1 - квадрат, 2 - үшбұрыш
int color;
// түсі
float radius;
// радиусы
float area;
// ауданы
float perimeter; // периметрі
};
Shape new_shape, old_shape;
Екінші тәсіл:
struct Shape {
/* құрылым аты – фигуралар */
int type;
// 0 - шеңбер, 1 - квадрат, 2 - үшбұрыш
int color;
// түсі
float radius;
// радиусы
float area;
// ауданы
float perimeter; // периметрі
} new_shape, old_shape;
немесе мынадай тҥрде де беруге болады:
struct gr
/* құрылым аты – топ */
{char fio[30]; /* құрылым элементі – аты-жөні */
char fak[25]; /* құрылым элементі */
int nomer; /* құрылым элементі */
}
gruppa1; /* құрылымдық айнымалы аты */
struct gr gruppa2; /* құрылымдық айнымалыны хабарлау */
Қҧрылымға компьютер жадынан орын бӛлу ҥшін қҧрылымдық айнымалыны
сипаттау керек:
struct құрылым_аты айнымалы_аты;
Мҧндайда қҧрылым жарияланған соң оның атын бірден пайдалануға болады
(анықтауды кейінірек беруге болады), бірақ мҧндай тәсіл компиляторға
қҧрылым мӛлшерін білу қажет етілмейтін кездерде қолданылады:
struct First;
struct Second {
First *p;
Second *prev, *suc;
}; struct First { /* First құрылымын анықтау */ };
Бҧл қҧрылымның байланысқан тізімдерін қҧру мҥмкіндігін береді.
143
Қҧрылымды инициалдаудың (қҧрылым ӛрістеріне мән берудің) бір жолы –
оның элементтерін сипатталу реттілігімен жҥйелі жақша
ішінде біртіндеп беру
болып табылады:
struct Employee {
char name[64];
// фамилиясы
int age;
// жасы
float salary;
// жалақысы
unsigned employee_number; // реттік нөмірі
} new_employee = {"Kadуrov", 32, 300.5, 1122};
Қҧрылымдағы жиымдарды инициалдау кезінде олардың элементтерін жҥйелі
жақшалар арқылы бӛліп, қҧрылым ӛрістеріне мән беруге болады, мысалы:
struct complex{
unsigned code;
float salary;
} comp [2][3]={ {{1021, 301}, {1031, 289}, {1041, 250}},
{{1121, 300}, {1131, 222}, {1141, 220}}
};
немесе тӛмендегідей тҥрде де инициалдау мҥмкіндіктері бар:
struct date { int day, month, year; };
d[5]={ {1,3,1980},
{5,1,1990},
{1,1,2002} };
Қҧрылымдарды анықтау барысында олардың элементтеріне бастапқы мән-
дерді пернелерден енгізіп те меншіктеуге болады. Қҧрылым элементтерінің
мәндерін енгізу ҥшін ағымдық енгізу операторы
cin >> (С++ стилінде) немесе
форматпен енгізу операторы –
scanf қолданылады.
Егер қҧрылымды сипаттау жолы программадағы барлық функциялардың
алдында орналасса, онда ол қҧрылымды осы программадағы барлық функция-
лар пайдалана алады.
9.5 Құрылым ӛрістерін пайдалану
Қҧрылымның элементін, яғни ӛрістерін пайдалану ҥшін нҥкте (.) қою
жолымен (тікелей ену) немесе -> таңбалары арқылы нҧсқауыш бойынша ену
амалы
қолданылады, мысалы:
struct fruit {
char name[15] ;
int calories;
};
struct vegetable {
char name[15];
int calories;
};
fruit a;
vegetable b;
144
Қҧрылымды осылай жариялап алған соң оның ӛрістерін a.calories және
b.calories деп, келесісін а.name и b.name деп пайдалана береміз.
Енді бір программаны толығырақ қарастырайық.
1 мысал. new_employee атты қҧрылым ӛрістерін пайдалану
#include
struct Employee {
char name[64];
int age;
float salary;
unsigned employee_number;
} new_employee = {"Kadyrov", 32, 300.5, 1122};
void main()
{
cout << new_employee.name << endl <<
new_employee.age << endl <<
new_employee.salary << endl <<
new_employee.employee_number << endl;
}
Программа жҧмысы нәтижесі:
Kadyrov
32
300.5
1122
Тағы бір мысал:
/* ойын карталарын сипаттайтын құрылымды анықтау */
enum suit {clubs, diamonds, hearts, spades};
/* шыбын, қиық, табан, қарға */
typedef int pips;/* pips (ұпайлар) int синонимі ретінде */
struct card {
suit s;
pips p; /* 1-ден 13-ке дейін сандар реттілігі
Тұз,2,3,...,10,Валет,Дама,Корольдерге сәйкес келеді */
};
Келесі анықтаулар
card типіндегі
m1,
m2 идентификаторларына орын бӛледі:
card m1,m2;
Қҧрылымның
m1 және
m2 ӛрістерін пайдалану ҥшін нҥкте арқылы жазылатын
таңдау жолын қолданамыз,
m1 ӛрісіне екілік қиық, ал
m2 ӛрісіне қарғаның да-
масын тағайындағымыз келеді делік:
m1.s = diamonds;