Strukturaga ko’rsatkichlar


Download 15.82 Kb.
Sana23.01.2023
Hajmi15.82 Kb.
#1112059
Bog'liq
18 dasturlash asoslari fanidan


18 - Mavzu: Strukturalar va ko’rsatkichlar.
Reja:

  1. Strukturaga ko’rsatkichlar

  2. Strukturalarga ko’rsatkichlar ustida amallar.

  3. Strukturalar va funktsiyalar.



Strukturaga ko’rsatkichlar oddiy ko’rsatkichlar kabi tasvirlanadi:
Complex *cc,*ss; struct goods *p_goods;
Strukturaga ko’rsatkich ta'riflanganda initsializatsiya qilinishi mumkin. Misol uchun ekrandagi rangli nuktani tasvirlovchi qo’yidagi strukturali tip va strukturalar massivi kiritiladi. Strukturaga ko’rsatkich qiymatlari initsializatsiya va qiymat berish orqali aniqlanadi:

Struct point


{int color;
int x,y;
} a,b;
struct point *pa=&a,pb; pb=&b;
Ko’rsatkich orqali struktura elementlariga ikki usulda murojaat qilish mumkin. Birinchi usul adres bo’yicha qiymat olish amaliga asoslangan bo’lib qo’yidagi shaklda qo’llaniladi:
(* strukturaga ko’rsatkich).element nomi;
Ikkinchi usul mahsus strelka (->) amaliga asoslangan bo’lib qo’yidagi ko’rinishga ega:
strukturaga ko’rsatkich->element nomi
Struktura elementlariga qo’yidagi murojaatlar o’zaro tengdir:
(*pa).color==a.color==pa->color
Struktura elementlari qiymatlarini ko’rsatkichlar yordamida qo’yidagicha o’zgartirish mumkin:

(*pa).color=red;


pa->x=125;
pa->y=300;

Dasturda nuqtaviy jismni tasvirlovchi particle strukturali tipga tegishli m_point strukturasi aniqlangan bo’lsin. Shu strukturaga pinta ko’rsatkichini kiritamiz:


Struct particle * pinta=&m_point;
Bu holda m_point struktura elementlarini qo’yidagicha o’zgartirish mumkin:
Pinta->mass=18.4;
For (I=0;I<3;I++)
Pinta->coord[I]=0.1*I;


Strukturalarga ko’rsatkichlar ustida amallar.

Strukturalarga ko’rsatkichlar ustida amallar oddiy ko’rsatkichlar ustida amallardan farq qilmaydi. Agar ko’rsatkichga strukturalar massivining biror elementi adresi qiymat sifatida berilsa, massiv buyicha uzluksiz siljish mumkin buladi. Misol tariqasida kompleks sonlar massivi summasini hisoblash masalasini ko’rib chiqamiz:


#include
void main()
{
sruct complex
{float x;
float y;} array[]={1.0,2.0,3.0,-4.0,-5.0,-6.0,-7.0,-8.0};
struct complex summa={0.0,0.0};
struct complex *point=&array[0];
int k,I;
k=sizeof(array)/sizeof(array[0]);
for(i=0;i{
summa.x+=point->x;
summa.y+=point->y;
point++;
}
Cout<<(“\n Summa: real=%f”,\t imag=%f”,summa.x,summa.y);
}

Dastur bajarilishi natijasi:


Summa: real=-8.000000, imag=-16.000000
Strukturalar va funktsiyalar.

Strukturalar funktsiyalar argumentlari sifatida yoki funktsiya qaytaruvchi qiymat kelishi mumkin. Bundan tashqari ikkala holda ham strukturaga ko’rsatkichlardan foydalanish mumkindir. Misol uchun kompleks son modulini hisoblash dasturini keltiramiz:


Double modul(complex a)
{return sqrt(a.real*a.real+a.imag*a.imag}
Ikki kompleks son yigindisini hisoblash funktsiyasi:
Complex add(complex a, complex b)
{ complex c;
c.real=a.real+b.real;
c.imag=a.imag+b.imag;
return c;
}
Bu funktsiyani ko’rsatkichlar yordamida qo’yidagicha yozish mumkin
Complex* add(complex* a, complex* b)
{ complex* c; c=(complex*)malloc(sizeof(complex));
c->real=(*a).real+(*b).real;
c->imag=(*a).imag+(*b).imag;
return c;
}
Bu funktsiya complex tipidagi dinamik ob'ekt yaratib adresini qaytaradi. Dasturda bu ob'ekt uchun ajratilgan joyni ozod qilish maqsadga muvofiq. Bu funktsiyaga dasturda qo’yidagicha murojaat qilish mumkin:
Complex a={0.1,-0.3},b={0.2,-0.5};
Complex* pa; pa=add(&a,&b);
Download 15.82 Kb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling