Uploaded by Otaxon Qurbonov

2.4-Struktura Birlashma

advertisement
Strukturalar
2
Strukturalar
Maʼlumki, biror predmet sohasidagi masalani
yechishda undagi obʼektlar bir nechta, har xil turdagi
parametrlar bilan aniqlanishi mumkin.
Masalan,
tekislikdagi nuqta haqiqiy turdagi
X - abtsissa va
Y - ordinata juftligi –
(x,y) koʼrinishida beriladi.
3
Strukturalar
Talaba haqidagi maʼlumotlar – satr turidagi
Talaba Familiyasi, Ismi, Sharifi (satr),
Mutaxassislik yoʼnalishi (satr),
Talaba yashash adresi (satr),
tugʼilgan yili (butun),
oʼquv bosqichi (butun),
haqiqiy turdagi reyting bali(butun),
mantiqiy turdagi talaba jinsi haqidagi maʼlumot
va boshqalardan shakllanadi.
4
Strukturalar
S++ tilida bir yoki har xil turdagi berilganlarni
jamlanmasi struktura deb nomlanadi. Struktura
foydalanuvchi tomonidan aniqlangan berilganlarning
yangi turi hisoblanadi. Struktura quyidagicha
aniqlanadi:
struct <struktura_nomi> // struktura nomi
{
<1_tur> <1_maydon_nomi>; // 1-maydon e`loni
<2_tur> <2_maydon_nomi>; // 1-maydon e`loni
. . .
<n_tur> <n_maydon_nomi>; // 1-maydon e`loni
};
5
Strukturalar
Xossalari:
• muallif (satr)
• nomi (satr)
• nashr qilingan yili (butun son)
• varaqlar soni (butun son)
Masala: bu
berilganlarni
birlashtirish
Struktura – o’ziga bir nechta har xil tiplardagi ma’lumotlarni o’z
ichiga oluvchi ma’lumotlar tipi.
Strukturaga yangi ma’lumotlar tipi qanday kiritiladi?
struktura
nomi
struct Book {
char author[40];
char title[80];
int year;
int pages;
};
!
maydon
//
//
//
//
muallif, satrli
nomi, satrli
nashr qilingan yil, butun son
varaqlar soni, butun son
Xotira ajratilmaydi!
6
Struktura bilan qanday ishlanadi?
Elon qilish:
Book b; // bu yerda xotira ajratiladi!
Book b1 = { “Yu. Golosinskiy",
“Ingliz tili … ", 2010, 576};
Maydonlarni to’ldirish:
strcpy ( b.author, "Yu.Golosinskiy" );
strcpy ( b.title, “Ingliz tili … " );
b.year = 2010;
b.pages = 576;
Strukturani
! maydoniga
murojaat qilishda
nuqtadan
foydalaniladi!
Klaviaturadan kiritish:
Cout<< “Muallif" ;
Cin>> b.author;
Cout<< “Kitob nomi" ;
Cin>> b.title;
Cout<< “Nashr qilingan yili, varaqlar soni " ;
Cin>>b.year;
Cin>>b.pages );
To’ldirilgan ma’lumotni chiqarish dasturti
struct Book {
char author[40]; // muallif, satrli
char title[80]; // nomi, satrli
int year;
// nashr qilingan yil, butun son
int pages;
// varaqlar soni, butun son
};
void Kitob_nomi(Book);
int main()
{
Book b;
strcpy(b.author,"Yu.Golosinskiy");
strcpy(b.title,"Ingliz tili ... ");
b.year=2010; b.pages=576;
Kitob_nomi(b);
}
void Kitob_nomi(Book b)
{
cout << "Kitob nomi: " << b.title << endl;
cout << "Kitob muallifi: " << b.author << endl;
getch();}
7
8
Klaviaturadan kiritish va chiqarish
#include <iostream>
#include <string.h>
using namespace std;
struct Book {
char author[40]; // muallif, satrli
char title[80]; // nomi, satrli
int year;
// nashr qilingan yil, butun son
int pages;
// varaqlar soni, butun son
};
void Kitob_nomi(Book);
int main()
{
Book b;
cout<< "Muallif
" ;
cin>> b.author ;
cout<<"Kitob nomi
"; cin>> b.title;
cout<<"Nashr qilingan yili, varaqlar soni
" ;
cin>> b.year;
cin>>b.pages ;
Kitob_nomi(b);
}
void Kitob_nomi(Book b)
{
cout << "Kitob nomi: " << b.title << endl;
cout << "Kitob muallifi: " << b.author << endl;
return;}
9
Birlashmalar
Xotiraning bitta sohasida (bitta adres boʼyicha) har
xil turdagi bir nechta berilganlarni saqlash
birlashmalar orqali amalga oshiriladi. Birlashma
eʼloni union kalit soʼzi, undan keyin identifikator va
blok ichida har xil turdagi elementlar eʼlonidan iborat
boʼladi.
Masalan:
union Birlashma
{
int n;
unsigned long N;
char Satr[10];
};
10
Birlashmalar
struct kitob{int narxi, yili;
kitob t34 = {25000,2012,200};
kitob pz4 = {80000,2011,300};
Strukturani barcha fayllarini chiqarish
cout << t34.narxi << "\n";
cout << t34.yili << "\n";
cout << t34.beti << "\n";
Birdaniga hammasini sikl orqali chiqarish
for (int i; i < 3; i++)
{ cout << t34.t[i] << "\n";}
int beti;};
Birlashmalar
Bu ikki xil usulni birlashtirish mumkin. Bunda structura
ko’rinishi quyidagicha bo’ladi
union kitob
{
struct
{
int narxi,yili;
int beti;
};
int t[3];
};
11
Birlashmalar
struct union ga almashtirildi va uning ichida barcha
o’zgaruvchilar ishlatilmoqda. Endi o’zgaruvchi yaratamiz
va unga murojaat qilamiz
kitob t34;
t34.narxi = 25000;
t34.yili = 2013;
t34.beti = 200;
cout << t34.t[0] << "\n";
cout << t34.t[1] << "\n";
cout << t34.t[2] << "\n";
12
Birlashmalar
13
Bu yerda narxi va t[0] xotiradagi bitta joyni har xil
ko’rinishda nomlanishidir. yili va t[1], beti va t[2]
lar ham xuddi shunday. Keyinchali union quyidagicha
ishlatiladi
struct kitob
{
union
{
struct
{
int narxi,yili;
int beti;
};
int t[3];
};
};
struct kitob va union kitob bir xil ishlaydi.
Download