151
cout << "\n Input a model of the boat: ";
cin >> pastBoats -> model;
cout << "\n Input the year of the creation of the boat: ";
cin >> pastBoats -> year;
cout << "\n Input the price of the boat: ";
cin >> pastBoats ->price;
pastBoats++;
}
pastBoats = &Boats[0];
print_data(pastBoats);
}
void print_data(boat *ptr_boat)
{
int i;
cout << "\n";
for (i = 0; i < k; i++) /* k айнымалысының көріну аймағына
назар салыңдар */
{
cout
<<
"The
boat
"
<<
ptr_boat
->
model
<<
"
the
year
of
the
creation
"
<< ptr_boat -> year << endl;
cout
<<
"
was
sold
for
"
<< ptr_boat -> price
<<
"$"
<<
endl;
ptr_boat++;
}
}
Мҧндағы cin – С++ тіліндегі терминалдан мәлімет енгізу немесе объектінің
мәнін программаға стандартты тҥрде енгізу,
ол ҥшін >> операторы
қолданылады.
Программаның орындалу нәтижесі:
How many boats? 3
Input a model of the boat: Yakor
Input the year of the creation of the boat: 1987
Input the price of the boat: 18234
Input a model of the boat: Blue
Input the year of the creation of the boat: 2003
Input the price of the boat: 44321
Input a model of the boat: Volna
Input the year of the creation of the boat: 2000
Input the price of the boat: 39876
The boat Yakor the year of the creation 1987
was sold for 18234$
The boat Blue the year of the creation 2003
was sold for 44321$
152
The boat Volna the year of the creation 2000
was sold for 39876$
9.8 Біріктірмелер (объединение – union)
Біріктірмелер – бҧл ӛрістерінің барлығы да бір адресте орналасатын қҧры-
лымның бір тҥрі. Оны сипаттау форматы да қҧрылымдардікі сияқты, тек
struct тҥйінді сӛзі орнына union сӛзі қолданылады. Біріктірме ҧзындығы
оның ӛрістерінің ең кӛлемдісінің ҧзындығына тең болады. Әрбір уақыт
кезеңінде «Біріктірмелер» типті айнымалыда тек бір мән ғана сақталады.
Біріктірмелерді бір сәтте бір ӛріс қана пайдаланылатыны белгілі жағдайларда,
тек компьютер жадын ҥнемдеу ҥшін қолданады.
Басқаша айтқанда, біріктірмелер – бҧл әр тҥрлі уақыт кезеңдерінде әр тҥрлі
типтегі объектілер сақталатын жады аймағы. Кез келген сәтте біріктірмеде кӛп
дегеннің ӛзінде, тек бір объект сақталады, ӛйткені оның элементтері кезектесе
отырып, жадының тек бір аймағын пайдаланады. Программалаушы біріктірме-
дегі мәліметті соның типіне сәйкес элементтің аты арқылы пайдаланылуын
қадағалап отыруы тиіс. Біріктірмеге ең соңғы жазылған элементтен басқаларын
пайдалану нәтижесі анықталмаған болып саналады. Енді бір мысал қарасты-
райық.
1-мысал
#include // С++ тілі стилінде
void main ()
{ /* "карточка" немесе "чек" сияқты мәндері бар жаңа pt
типін (төлем типі) сипаттау */
enum pt {CARD, CHECK};
pt type;
union payment
{ char card[25];
long check;
} info;
type = CARD;
cout << "Input info.card: ";
cin.getline(info.card, 25);
cout << "Input info.check: ";
cin >> info.check;
switch (type)
{case CARD : cout << info.card << endl; break;
case CHECK: cout << info.check << endl; break;
}
}
Прогамманың орындалу нәтижесі (9.3-сурет):
Input info.card : My bank
9.3-сурет
153
Input info.check : 12345
90
Алынған мәннің 90 болуы біріктірме элементін пайдалану нәтижесінің анық-
талмағанын кӛрсетеді. Келесі мысалдағы біріктірмеде ең соңғы орналасқан
элемент пайдаланылады.
#include // С тілі стилінде
void main ()
{ enum pt {CARD, CHECK};
pt type;
union payment
{
char card[25];
long check;
} info;
type = CARD;
info.check = 12345;
/* Мұнда компьютер жадына соңғы болып орналасқан біріктірме
элементі пайдаланылып отыр: */
puts("Input info.card:");
gets(infо.card);
switch (type)
{ case CARD : puts(info.card); break;
case CHECK: printf ("%d",info.check); break;
}
}
Программаның орындалу нәтижесі
(9.4-сурет):
Input info.card:
My bank
My bank
Press any key to continue
Бҧл программада дҧрыс нәтиже алынды.
Келесі мысал біріктірмелерді дҧрыс пайдалану жауапкершілігі толығынан
программалаушыда жатқанын кӛрсетеді.
#include // С++ тілі стилінде
union Number
{
int x;
float y;
};
void main()
9.4-сурет
Достарыңызбен бөлісу: |