4-amaliy topshiriq


Download 35.88 Kb.
Sana02.06.2024
Hajmi35.88 Kb.
#1836898
Bog'liq
Malumotlar tuzilmasi 4


O‘ZBEKISTON RESPUBLIKASI RAQAMLI TEXNOLOGIYALAR VAZIRLIGI
MUHAMMAD AL-XORAZMIY NOMIDAGI TOSHKЕNT AXBOROT TЕXNOLOGIYALARI UNIVЕRSITЕTI



Ma’lumotlar tuzilmasi va algoritmlar

4-amaliy topshiriq

Bajardi: 513-22 guruh talabasi


Tekshirdi: Bo’riyev Yusuf Panjiyev Nizomiddin

Toshkent 2023


13-variant Futbol jamosining 20 ta o’yinchilari familiyalaridan tashkil topgan halqasimon ro’yhat berilgan. O’yinchilar 2 ta guruhga 10 tadan ajratilsin. Ikkinchi guruhga umumiy o’yinchilarni har 12-inchisi kirsin.


Dinamik ma’lumotlar tuzilmasi

Statik ma’lumotlar tuzilmasi vaqt o‘tishi bilan o‘z o‘lchamini o‘zgartirmaydi. Biz har doim dastur kodidagi statik ma’lumotlar tuzilmasiga qarab ularning o‘lchamini bilishimiz mumkin. Bunday ma’lumotlarga teskari ravishda dinamik ma’lumotlar tuzilmasi mavjud bo‘lib, bunda dastur bajarilishi davomida dinamik ma’lumotlar tuzilmasi o‘lchamini o‘zgartirishi mumkin. Dinamik ma’lumotlar tuzilmasi – bu qandaydir bir qonuniyatga asoslanib shakllangan, lekin elementlari soni, o‘zaro joylashuvi va o‘zaro aloqasi dastur bajarilishi davomida shu qonuniyat asosida dinamik o‘zgaruvchan bo‘lgan ma’lumotlar tuzilmasidir. Dinamik ma’lumotlar tuzilmasi 3.1-rasmdagidek klassifikatsiyalanadi.



Dinamik ma’lumotlar tuzilmasi klassifikatsiyasi

Dasturlarda dinamik ma’lumotlar tuzilmasidan ko‘pincha chiziqli ro‘yhatlar, steklar, navbatlar va binar daraxtlar ishlatiladi. Bu tuzilmalar bir-biridan elementlarning bog‘lanish usuli va ular ustida bajarilishi mumkin bo‘lgan amallari bilan farqlanadi. Dinamik tuzilmalar massiv va yozuvdan farqli ravishda operativ xotirada ketma-ket sohalarda joylashmaydi. Ixtiyoriy dinamik tuzilma elementi 2 ta maydondan tashkil topadi: tuzilma tashkil etilishiga sabab bo‘layotgan

informatsion maydon va elementlarning o‘zaro aloqasini ta’minlovchi ko‘rsatkichli maydon. Chiziqli ro‘yhatlarda har bir element o‘zidan keyingisi yoki oldingisi bilan ham bog‘langan bo‘lishi mumkin. Birinchi holatda, ya’ni elementlar o‘zidan keyingi element bilan bog‘langan bo‘lsa, bunday ro‘yhatga bir bog‘lamli ro‘yhat deyiladi. Agar har bir element o‘zidan oldingi va o‘zidan keyingi element bilan bog‘langan bo‘lsa, u holda bunday ro‘yhatlarga 2 bog‘lamli ro‘yhatlar deyiladi. Agar oxirgi element birinchi element ko‘rsatkichi bilan bog‘langan bo‘lsa, bunday ro‘yhatga halqasimon ro‘yhat deyiladi. Ro‘yhatning har bir elementi shu elementni identifikatsiyalash uchun kalitga ega bo‘ladi. Kalit odatda butun son yoki satr ko‘rinishida ma’lumotlar maydonining bir qismi sifatida mavjud bo‘ladi. Ro‘yhatlar ustida quyidagi amallarni bajarish mumkin.


  • ro‘yhatni shakllantirish (birinchi elementini yaratish);

  • ro‘yhat oxiriga yangi element qo‘shish;

  • berilgan kalitga mos elementni o‘qish;

  • ro‘yhatning ko‘rsatilgan joyiga element qo‘shish (berilgan kalitga mos elementdan oldin yoki keyin)

  • berilgan kalitga mos elementni o‘chirish;

  • kalit bo‘yicha ro‘yhat elementlarini tartibga keltirish.

Ro‘yhatlar bilan ishlashda dasturda boshlang‘ich elementni ko‘rsatuvchi ko‘rsatkich talab etiladi. Chiziqli bir bog‘lamli ro‘yhatlar ustida turli amallar bajarish algoritmlari va dasturlarini ko‘rib chiqamiz.




Dastur kodi va ishlashi……………..


#include


#include
#include

using namespace std;


struct Player {


string firstName;
string lastName;
};

int main() {


vector
players = {
{"Ali", "Ismoilov"},
{"Vali", "Nazarov"},
{"Sanjar", "Rahimov"},
{"Olim", "Tursunov"},
{"Shohruh", "Xakimov"},
{"Ulug'bek", "Yusupov"},
{"Doston", "Zokirov"},
{"Farrux", "Akhmadov"},
{"G'ayrat", "Bekmurodov"},
{"Hakim", "G'ulomov"},
{"Ibrohim", "Davronov"},
{"Javohir", "Ergashev"},
{"Kamol", "Fayzullayev"},
{"Lobar", "G'aniyeva"},
{"Mukhammad", "Hakimov"},
{"Nodir", "Ibrohimov"},
{"Otabek", "Jamolov"},
{"Parviz", "Kamolov"},
{"Qobil", "Layloqulov"},
{"Rustam", "Mukhammedov"}
};

vector
group1, group2;


for (int i = 0; i < 10; i++) {


group1.push_back(players[i]);
}

for (int i = 10; i < 20; i++) {


group2.push_back(players[i]);
}

for (int i = 0; i < 12; i++) {


cout << group2[i].firstName << " " << group2[i].lastName << endl;
}

return 0;


}
Ishlanishi……………….
1-qadam; Dasturda "Player" nomli struct yaratilgan va bu struct ichida o'yinchining ismi va familiyasi saqlanadi.

2-qadam;Dastur boshida "players" nomli vector yaratilgan va unga 20 ta "Player" obyektlari qo'shildi.


3-qadam;Keyin "group1" va "group2" nomli ikkita bo'sh vector yaratildi.


4-qadam;Keyin for tsikli yordamida birinchi 10 o'yinchini "group1" ga, keyingi 10 o'yinchini esa "group2" ga qo'shildi.


5-qadam;So'nggi for tsikli yordamida "group2" ning har bir o'yinchisi konsolga chiqarildi.


6-qadam;Dastur natijasida, "group2" guruhidagi o'yinchilar familiyalari konsolga chiqqan.


Dastur bajarilishi natijasi

Ibrohim Davronov


Javohir Ergashev
Kamol Fayzullayev
Lobar G'aniyeva
Mukhammad Hakimov
Nodir Ibrohimov
Otabek Jamolov
Parviz Kamolov
Qobil Layloqulov
Rustam Mukhammedov







Xulosa:

Mening xulosam shulardan iboratki men bu misol orqali fudbolchilarni ikki guruhga ajratib olishni o’rgandim,


O’zimga kerakli malumotlarni topdim va xulosa oldim.

Download 35.88 Kb.

Do'stlaringiz bilan baham:




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