Qarshi muhandislik-iqtisodiyot instituti "axborot texnologiyalari" kafedrasi "TEXNIK TIZIMLARDA axborot texnologiyalari"



Download 2,19 Mb.
Pdf ko'rish
bet59/105
Sana26.03.2022
Hajmi2,19 Mb.
#510793
1   ...   55   56   57   58   59   60   61   62   ...   105
Bog'liq
ma`ruza matni 2018

Strukturalarda ko’rsatkich. 
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 dastur 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; i
 cout<<(&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. 
Dastur 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; 
}
Dastur 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 dastur ishlashining natijasi quyidagicha bo’lishi 
mumkin: 

Download 2,19 Mb.

Do'stlaringiz bilan baham:
1   ...   55   56   57   58   59   60   61   62   ...   105




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