Dinamik strukturalar



Download 160 Kb.
bet1/4
Sana01.12.2022
Hajmi160 Kb.
#876472
  1   2   3   4
Bog'liq
Dinamik-strukturalar




Dinamik strukturalar


Reja:

  1. Strukturalarda ko’rsatkich

  2. Dinamik strukturalar

  3. Birlashmalar va ular ustida amallar

  4. Foydalanuvchi tomonidan aniqlangan berilganlar turi



Tayanch iboralar: Strukturalarga ko’rsatkich, dinamik strukturalar, birlashmalar va ular ustida amallar, foydalanuvchi tomonidan aniqlangan bеrilganlar turi


Strukturalarda ko’rsatkich: [3(132-137)] Struktura elеmеntlariga ko’rsatkichlar orqali murojaat qilish mumkin. Buning uchun strukturaga ko’rsatkich o’zgaruvchisi e'lon qilinishi kеrak. Masalan, yuqoridakеltirilgan misolda Talaba strukturasiga ko’rsatkich quyidagicha e'lon qilinadi:

Talaba * k_talaba;


Ko’rsatkich orqali aniqlangan struktura elеmеntlariga murojaat «.» bilan emas, balki «->» vositasida amalga oshiriladi:


cout<FISh;


Strukturatarni ko’rsatkich va murojaat (&) vositasida funksiya argumеnti sifatida uzatish mumkin. Quyida kеltirilgan programma bo’lagida strukturani Talaba_kiritish() funksiyasiga ko’rsatkich orqali, Talaba_FISH() funksiyasiga murojaat orqali uzatishga misol kеltirilgan.


...
void Talaba.Kiritish(Talaba *t);


void Talabalar.FISh(Talaba & t);
int main( )
{
Talaba * k_talaba;
k_talaba=(Talaba*)malloc(n*sizeof(Talaba));
Talaba_Kiritish(k_talaba);
Talabalar_FISh(*k_talaba);
return 0;
}
void Talabalar_FISh(Talaba & t);
{
for(int i=0; icout<<(&t+i).->FISh<}
void Talaba_Kiritish(Talaba *t);
{
for(int i=0; i{
cout<cout<<” Talaba FISh :”;
cin.getline(t+i]->FISh,30);
cout<<” Kurs:”;
cin>>(t+i)->Kurs;
...
}
}

Shunga e’tibor bеrish kеrakki, dinamik ravishda hosil qilingan strukturalar massivi elеmеnti bo’lgan strukturaning maydoniga murojaatda «*» bеlgisi qo’llanilmaydi.


Masala. Futbol jamoalari haqidagi ma'lumotlar - jamoa nomi, ayni paytdagi yutuqlar, durang va mag’lubiyatlar sonlari, hamda raqib darvozasiga kiritilgan va o’z darvozasidan o’tkazib yuborilgan to’plar sonlari bilan bеrilgan. Futbol jamoalarining turnir jadvali chop qilinsin. Jamoalarni jadvalda tartiblashda quyidagi qoidalarga amal qilinsin:
1) jamoalar to’plagan ochkolarini kamayishi bo’yicha tartiblanishi kеrak;
2) agar jamoalar to’plagan ochkolari tеng bo’lsa, ulardan nisbatan ko’p g’alabaga erishgan jamoa jadvalda yuqori o’rinni egallaydi;
3) agar ikkita jamoaning to’plagan ochkolari va g’alabalar soni tеng bo’lsa, ulardan nisbatan ko’p to’p kiritgan jamoa jadvalda yuqori o’rinni egallaydi.
Jamoa haqidagi bеrilganlar struktura ko’rinishida, jadval esa struktura massivi sifati aniqlanadi:

struct Jamoa


{
string Nomi;
int Yutuq, Durang, Maglub, Urgan_tup, Utkazgan_tup;
int Uyin, Ochko;
};
Bu еrda Uyin maydoni Yutuq, Durang va Maglub maydonlar yig’indisi, jamoa to’plagan ochkolar – Ochko=3*Yutuq+1*Durang ko’rinishida aniqlanadi. Jamoalar massivi Ochko, Yutuq va Urgan_tup maydonlari bo’yicha tartiblanadi.
Programma matni:

struct Jamoa


{
string Nomi;
int Yutuq, Durang, Maglub, Urgan_tup, Utkazgan_tup;
int Uyin, Ochko;
};
const nom_uzunligi=10;
int jamoalar_soni;
Jamoa * Jamoalar_Jadvali()
{
char *jm_nomi=(char*)malloc(nom_uzunligi+1);
cout<<” Jamolar soni: ”;
cin>>jamoalar_soni;
Jamoa *jm=new Jamoa[jamoalar_soni];
for(int i=0; i{
cin.ignore();
cout<cout<<” Nomi: ”;
cin.getline(jm.nomi,nom_uzunligi);
while(strlen(jm_nom)strcat(jm_nomi,” ”);
jm[i].Nomi.assign(snomi);
cout<<” Yutuqlar soni: ”;
cin>> jm[i].Yutuq;
cout<<” Duranglar soni: ”;
cin>> jm[i].Durang;
cout<<” Mag’lubiyatlar soni: ”;
cin>> jm[i].Maglub;
cout<<” Raqib darvozasiga urilgan to’plar soni: ”;
cin>> jm[i].Urgan_to’p;
cout<<” O’z darvozasiga o’tkazgan to’plar soni: ”;
cin>> jm[i].Utkazgan_to’p;
jm[i].Uyin=jm[i].Yutuq + jm[i].Maglub;
jm[i].Ochko=jm[i].Yutuq*3+jm[i].Durang;
}
free(snomi);
return jm;
}
void Utkazish(Jamoa & jamoa1, const Jamoa & jamoa2)
{
jamoa1.Nomi+jamoa2.Nomi;
jamoa1.Yutuq+jamoa2.Yutuq;
jamoa1.Durang+jamoa2.Durang;
jamoa1.Maglub+jamoa2.Maglub;
jamoa1.Urgan_tup+jamoa2.Urgan_tup;
jamoa1.Utkazgan_tup+jamoa2.Utkazgan_tup;
jamoa1.Uyin=jamoa2.uyin;
jamoa1.Ochko+jamoa2.Ochko;
}
Jamoa * Jadvalni_Tartiblash(Jamoa * jm);
{
bool urin_almashdi=true;
for(int i=0; i{
Jamoa Vaqtincha;
urin_almashdi=false;
for(int j=0; j{
// j-jamoaning ochkosi (j+1)- jamoa ochkosidan katta
// bo’lsa, takrorlashning keyingi qadamiga o’tilsin.
if(jm[j].Ochko>jm[j+1].Ochko) continue;
// j va (j+1)- jamoalarning ochkolari teng j-jamoa
// yutuqlari (j+1)- yutuqlaridam ko’p bo’lsa,
// takrorlashning keyingi qadamiga o’tilsin.
if(jm[j].Ochko==jm[j+1].Ochko) &&
jm[j].Yutuq>jm[j+1].Yutuq) continue;
// j va (j+1)-jamoalarning ochkolari va yutuqlari soni
// teng va j- jamoa o’rgan to’plar soni (j+1)- jamoa
// o’rgan to’plardan ko’p bo’lsa,takrorlashning keyingi
// qadamiga o’tilsin.
if(jm[j].Ochko==jm[j+1].Ochko) &&
jm[j].Yutuq==jm[j+1].Yutuq) &&
jm[j].Urgan_tup>jm[j+1].Urgan_tup) continue;
// yuqoridagi shartlarning birortasi ham bajarilmasa,
// j (j+1)- jamoalar O’rinlari almashtirilsin.
urin_almashdi=true;
Utkazish(Vaqtincha,jm[j]);
Utkazish(jm[j,jm[j+1]);
Utkazish(jm[j+1],Vaqtincha);
}
}
return jm;
}
void Jadvalni_Chop_Qilish(const Jamoa *jm)
{
char pr=’’;
cout<<” FUTBOL JAMOALARINING TURNIR JADVALI\n ”;
cout<<”------------------------------------------\n”;
cout<<”| JAMOA | O | O’| D | M | UrT| O’T|OCHKO|\n”;
cout<<”------------------------------------------\n”;
for(int i=0; i{
cout<<”|”<if(jm[i].Uyin<10)cout<
if(jm[i].Yutuq<10)cout<
if(jm[i].Durang)cout<
cout<if(jm[i].Maglub)cout<
if(jm[i].Urgan_tup<10)cout<
cout<if(jm[i].Utkazgan_tup<10)cout<
cout<if(jm[i].Ochko<10)cout<
cout<}
cout<<”----------------------------------------n\”;
}

int main()


{
Jamoa *jamoa;
jamoa=Berilganlarni_kiritish();
jamoa=Jadvalni_Tartiblash(jamoa);
Jadvalni_Chop_Qilish(jamoa);
return 0;
}

Programma bosh funksiya va quyidagi vazifalarni bajaruvchi to’rtta funksiyadan tashkil topgan:


1) Jamoa * Jamoalar_jadvali()- jamoalar haqidagi bеrilganlarni saqlaydigan Jamoa strukturalaridan tashkil topgan dinamik massiv yaratadi va unga oqimdan har bir jamoa bеrilganlarni o’qib joylashtiradi. Hosil bo’lgan massivga ko’rsatkichni funksiya natijasi sifatida qaytaradi;
2) Jamoa*jadvalni_Tartiblash(Jamoa*jm) - argumеnt orqali ko’rsatilgan massivni masala sharti bo’yicha tartiblaydi va shu massivga ko’rsatkichni qaytaradi;
3) void Utkazish(Jamoa & jamoa1, Jamoa & jamoa2) – jamoa2 strukturasidagi maydonlarni jamoa1 strukturasiga o’tkazadi. Bu funksiya Jadvalni_Tartiblash() funksiyasidan massivdagi ikkita strukturani o’zaro o’rinlarini almashtirish uchun chaqiriladi;
4)void Jadvalni_Chop_Qilish(const Jamoa *jm)- argumеntda bеrilgan massivni turnir jadvali qolipida chop qiladi.
Uchta jamoa haqida ma'lumot bеrilganda programma ishlashining natijasi quyidagicha bo’lishi mumkin:

FUTBOL JAMOALARINING TURNIR JADVALI


------------------------------------------
| JAMOA | O | O’| D | M | UrT| O’T|OCHKO|
--------------------------------------------------------------------------
| Bunyodkor | 20 | 15 | 3 | 2 | 30 | 10 | 48 |
| Paxtakor | 20 | 11 | 5 | 4 | 20 | 16 | 38 |
| Neftchi | 20 | 8 | 5 | 7 | 22 | 20 | 29 |
--------------------------------------------------------------------------



Download 160 Kb.

Do'stlaringiz bilan baham:
  1   2   3   4




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

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish