145
m1.р = 2;
m2.s = spades;
m2.p = 12;
Келесідей анықтаулар мен меншіктеу амалдарын қарастырайық:
card cd, *рс = &cd;
cd.p = 2;
cd.s = spades;
Қҧрылым элементтерін пайдалануды нҧсқауыш тҥріндегі -> операторы арқылы
да орындауға болады.
Қҧрылым элементтерін пайдалану
9.1-кесте
Өрнек Оның басқаша жазылуы Мәні
cd.p
рс -> р
2
cd.s
рс -> s
spades(3)
enum
арқылы шығады.
(*рс).s
pc -> s
spades(3)
Қҧрылымдар объектіге бағытталған программалаудың іргелі ҧғымдарының
бірі – кластар қҧру негізі болып саналатын маңызды мәліметтер типіне жатады.
9.6 Құрылымдар жасау
Қҧрылымдар жасауға толығырақ бір мысал келтірейік
2 мысал. Қайық атын, шыққан жылын және бағасын қҧрылым тҥрінде жазу
/* struct_2
Құрылым жасау мысалы */
#include
# define STR15 16 /* аяқтау нөлі үшін бір символ қосу */
struct stboat
// Қайық құрылымы
{ char model[STR15]; // моделі
int year;
// шығарылған жылы
float price;
// бағасы
} boat;
// қайық
void main()
{ /* қайық моделін енгізу */
printf("\n Input a model of the boat: ");
gets(boat.model);
/* шығарылған жылын енгізу */
printf("\n Input the year of the creation of the boat:
"); scanf("%d",&boat.year);
/* бағасын енгізу */
printf("\n Input the price of the boat: ");
146
scanf("%f",&boat.price);
/* барлық енгізілген мәліметтерді шығару */
printf("\n\nThe boat %s, the year of the creation %d\n",
boat.model, boat.year);
printf("The boat was sold for %8.2f tenge.\n",
boat.price);
}
Программаны орындау жҧмысының нәтижесі:
Input a model of the boat: Tulpar
Input the year of the creation of the boat: 2009
Input the price of the boat: 168000
The boat Tulpar, the year of the creation 2009
The boat was sold for 168000.00 tenge.
Қҧрылымды функция аргументі ретінде беру тәсілін қарастырайық. Мҧнда
қҧрылым аргумент ретінде мәні бойынша функцияға беріледі, яғни функцияға
тек мәліметтер кӛшірмесі ғана жіберіледі.
3 мысал. Геометриялық фигуралар тҥрлерін қҧрылым тҥрінде жазу
/* struct_3
Құрылымды функция аргументі ретінде қолдану */
#include
#define PI
3.14
struct Shape {
/* фигура */
int type;
// 0 - шеңбер, 1 - квадрат, 2 - үшбұрыш
char color; // түсі
float radius; // радиусы
double area; // ауданы
};
void show_struct (Shape ); /* show_struct (құрылымды
көрсету) функциясы прототипі */
void main()
{
Shape circle;
circle.type = 0;
circle.color = 'r';
circle.radius =5.0;
circle.area = PI * circle.radius * circle.radius;
show_struct (circle ); /* функцияны шақыру */
147
}
/* функцияны сипаттау */
void show_struct (Shape shape)
{
printf("shape.type %d\n", shape.type);
printf("shape.color %c\n", shape.color);
printf("shape.radius %f\n", shape.radius);
printf("shape.area %f\n", shape.area);
}
Программа жҧмысының нәтижесі
(9.1-сурет):
shape.type 0
shape.color r
shape.radius 5.000000
shape.area 78.500000
Press any key to continue
Қҧрылымдарға нҧсқауыш ретінде берілетін мәліметтерді қарастырып, функ-
ция ішінде қҧрылымды ӛзгерту тәсіліне программа қҧрып кӛрейік.
4 мысал. Геометриялық фигуралар тҥрлерін қҧрылым тҥрінде жазу
/* struct_4
Құрылым өрістерінің мәндерін өзгерту керек болса, онда
құрылым ретіндегі айнымалы мән бойынша емес, сілтеме бойынша
берілуі тиіс. Функция ішінде құрылым өрістерін пайдалану ->
амалы арқылы орындалады */
#include
#define PI 3.14
struct Shape {
int type; /* 0 - шеңбер,1 - квадрат,2 – теңбүйірлі үшбұрыш
*/
char color;
// түсі
float radius; // радиусы немесе қабырғасы
double area;
// ауданы
} circle = {1,'b',2,4}; /* бастапқы мән беріп инициалдау
*/
void change_struct (Shape *) ; /* change_struct функциясы
прототипі (ағылш. құрылым өзгерту) */
void main ()
{ /* функцияға мәлімет беруге дейін */
printf("Before\n");
printf("circle.type %d\n", circle.type);
printf("circle.color %c\n", circle.color);
printf("circle.radius %f\n", circle.radius);
9.1-сурет
Достарыңызбен бөлісу: |