“Dasturiy injiniring” fakulteti “MA‟lumotlar tuzilmasi va algoritmlar”



Yüklə 1,33 Mb.
Pdf görüntüsü
səhifə24/49
tarix08.11.2022
ölçüsü1,33 Mb.
#67920
1   ...   20   21   22   23   24   25   26   27   ...   49
Malumotlar-tuzilmasi-va-algoritmlar-asosida-nazariy-bilimlarini-hamda

Ishni bajarishga namuna 
Topshiriq variantlariga o‟xshash bitta misolni yechish dasturini ko‟rib 
chiqamiz. Quyidagicha masala qo‟yilgan bo‟lsin. Ro‟yhatning maksimal elementi 
topilsin. Ushbu masalaning algoritmi, dasturiy kodi va natijasi quyida keltirilgan. 
Algoritm 
1. Ekranga menyu chiqaramiz: 1 - element qo’shish; 2 - ro’yhatni ko’rish;
3 - ro’yhat maksimalini topish; 0 - chiqish; tanlash uchun tanla o‟zgaruvchisiga 
qiymat so‟raymiz. 2-qadamga o‟tish. 
2. Agar tanla=1 bo‟lsa, 3-qadamga, 2 ga teng bo‟lsa, 4-qadamga, 3 tanlansa, 
6-qadamga o‟tish, 0 tanlansa dasturni yakunlash. 
3. Navbatdagi elementni yaratish p; (p ning info maydoniga qiymat so‟rab 
olib yozish va ptr maydoniga NULL yozish) Agar ro‟yhat boshi ko‟rsatkichi 
lst=NULL bo‟lsa, lst=p va last=p; aks holda last – ro‟yhat oxirgi elementi ptr 
maydoniga p ni yozib, p elementni last qilib belgilaymiz. 1-qadamga o‟tamiz. 
4. Agar lst NULL ga teng bo‟lsa, ro‟yhat bo‟shligini ekranga chiqarib,
1-qadamga o‟tish. Aks holda, p=lst va 5-qadamga o‟tish. 
5. Agar p ning ptr maydoni NULL bo‟lmasa, p ning info maydonini ekranga 
chiqaramiz va keyingi elementga o‟tamiz, ya‟ni p=p->ptr, 5-qadamga o‟tamiz, aks 
holda, 1-qadamga o‟tamiz. 
6. max=lst->info, ya‟ni max o‟zgaruvchisiga ro‟yhat 1-elementi info 
maydoni qiymatini o‟zlashtiramiz. p=lst va 7-qadamga o‟tish. 


57 
7. Agar p NULL ga teng bo‟lmasa, 8-qadamga o‟tamiz, aks holda max ni 
ekranga chiqaramiz va 1-qadamga o‟tamiz. 
8. Agar max< p->info bo‟lsa, max=p->info. Keyingi elementga o‟tamiz, 
ya‟ni p=p->ptr. 7-qadamga o‟tamiz.
Dastur kodi 
#include  
using namespace std; 
class Node{ 
public: int number; 
Node* next; 
}; 
int main() 
{ Node* head = NULL; 
Node* lastPtr = NULL; 
short action = -1; 
while (1) 
{ cout<<"1. element qo’shish\n"; 
cout<<"2. ro’yhatni ko’rish\n"; 
cout<<"3. ro’yhat maksimalini topish\n"; 
cout<<"0. chiqish\n\n"; 
cout<<"tanlang: "; 
cin>>action; 
if (action == 0) { 
system("CLS"); 
break;} 
if (action == 1) 
{ system("CLS"); 
Node* ptr = new Node; 
int numb = -1; 
 


58 
cout<<"son kiriting: "; 
cin>>numb; 
ptr->number = numb; 
ptr->next = NULL; 
if (head == 0) 
{ head = ptr; 
lastPtr = ptr; 
system("CLS"); 
continue; 

lastPtr->next = ptr; 
lastPtr = ptr; 
system("CLS"); 
continue; 

if (action == 2){ 
Node* ptr = NULL; 
system("CLS"); 
if (head == 0) 
{ cout<<"\t!!! ro’yhat bo’sh !!!\n\n"; 
system("PAUSE"); 
system("CLS"); 
continue; 

cout<<"* * * * * ro’yhat * * * * *\n\n"; 
ptr = head; 
while (1) { 
cout<
number<<" "; 

if (ptr->next == 0) break; 



59 
 ptr = ptr->next; 

cout<<"\n\n"; 
system("PAUSE"); 
system("CLS"); 
continue; 

if (action == 3) 

system("CLS"); 
Node* p = head; 
Node* q = new Node; 
Node* last = new Node; 
int max=p->number; q=head; 
while(p){ 
if(max
number){ max=p->number;} 

p=p->next; 

system("CLS"); 
cout<<"max="<
system("pause"); 
continue; 

}} 
Dastur bajarilishi natijasi 
1. element qo’shish 
2. ro’yhatni ko’rish 
3. ro’yhat maksimalini topish 
0. chiqish 
tanlang:1 


60 
{1,2,3,55,4,6} sonlari kiritildi. 2-holat tanlanganda natija: 
*****ro’yhat***** 
1 2 3 55 4 6 
3-holat tanlanganda natija: 
max=55 
Nazorat savollari 
 
1. Dinamik ma‟lumotlar tuzilmasi nima va uning statik tuzilmalardan 
afzalligini tushuntiring? 
2. Ro‟yhat tuzilmasi nima va ro‟yhatning qanday turlarini bilasiz? 
3. Ro‟hat tuzilmasini dasturda ifodalash qanday amalga oshiriladi? 
4. Ro‟hat tuzilmasi ustida amal bajarish algoritmlarini tushuntiring 
5. Ikki bog‟lamli ro‟yhat nima va uni bir bog‟lamli ro‟hatdan afzalligi va 
kamchiligini tushuntiring. 
 
Topshiriq 
Variantlar: 
1. Elementni n pozitsiyaga siljitish dasturini tuzing. 
2. Ro‟yhat nusxasini yarating. 
3. Ro‟yhat boshiga element qo‟yish. 
4. Ikkita ro‟yhat birlashtirilsin. 
5. Ro‟yhatning n-inchi elementi o‟chirilsin. 
6. Ro‟yhat n-inchi elementidan keyin yangi element qo‟yilsin. 
7. Ikkita ro‟yhat umumiy elementlaridan tashkil topgan ro‟yhat yaratilsin. 
8. Ro‟yhat elementlari o‟sish tartibida joylashtirilsin. 
9. Ro‟yhat har ikkinchi elementi o‟chirilsin. 
10. Ro‟yhat har uchinchi elementi o‟chirilsin. 
11. Ro‟yhat elementlari kamayish tartibida joylashtirilsin. 
12. Ro‟yhat tozalansin. 


61 
13. 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. 
14. Sportchi familiyalaridan tashkil topgan ikkita halqasimon ro‟yhat 
berilgan. Qura tashlash amalga oshirilsin. Birinchi guruhdagi har n-inchi sportchi, 
ikkinchi guruhdagi har m-inchi sportchi bilan raqib bo‟lsin. 
15. Lotoreya ishtirokchilari familiyalari va mukofotlar nomlaridan tashkil 
topgan 2 ta halqasimon ro‟yhat berilgan. N ta ishtirokchi g‟olib bo‟lsin (har K-
inchi). Mukofotlarni qayta hisoblash soni - t. 
16. O‟quvchilar familiyalari va imtihon biletlari raqamlaridan tashkil topgan 
2 ta halqasimon ro‟yhat berilgan. O‟quvchilar tomonidan olingan bilet raqamlari 
aniqlansin. Imtihon biletlari uchun qayta hisoblash soni - E, o‟quvchilar uchun esa 
- K.
17. Mahsulot nomlaridan tashkil topgan ro‟yhat berilgan. Ro‟yhat 
elementlaridagi SONY firmasida ishlab chiqilgan mahsulotlardan tashkil topgan 
yangi ro‟yhat yarating. 
18. 2 ta guruh talabalari familiyalaridan tashkil topgan 2 ta ro‟yhat berilgan. 
Birinchi guruhdan L ta talaba ikkinchi guruhga o‟tkazilsin. Qayta hisoblashlar soni 
- K. 
19. BOSCH va PHILIPS konsernlari tomonidan ishlab chiqilgan mahsulot 
nomlaridan tashkil topgan ikkita ro‟yhat berilgan. Har ikkala firma tomonidan 
ishlab chiqilgan bir xil mahsulotlar ro‟yhati tuzilsin. 
20. Futbol jamoasining asosiy va zahira tarkibi o‟yinchilari familiyalaridan 
tashkil topgan ikkita ro‟yhat berilgan. K ta o‟yinchi almashtirilsin. 
21. 1- va 2-vzvod askarlari familiyalaridan tashkil topgan ikkita ro‟yhat 
berilgan. Hujum natijasida 1-chi vzvoddan M ta askar halok bo‟ldi. Ikkinchi vzvod 
askarlaridan birinchi vzvod to‟ldirilsin. 
22. Mahsulot nomlari va xaridorlar familiyalaridan tashkil topgan ikkita 
ro‟yhat berilgan. Har bir N-chi xaridor M-chi mahsulotni sotib oladi. Xarid


62 
qilingan mahsulotlar ro‟yhatini chiqaring. 
23. SONY va SHARP firmalari tomonidan ishlab chiqilgan mahsulot 
nomlaridan tashkil topgan ikkita ro‟yhat berilgan. O‟zaro raqobat qiluvchi 
mahsulotlar ro‟yhatini tuzing. 
24. Talabalar ismlaridan iborat ro‟yhat berilgan. Ismining uzunligi eng katta 
bo‟lgan talabani ro‟yhat boshiga joylang. 
25. Talabalar familiyalaridan iborat halqasimon ro‟yhat berilgan. Har k-inchi 
talabadan 3 tasi ro‟yhatdan ajratib olinsin. 
26. Talabalar ismlaridan iborat massiv elementlarini berilgan halqasimon 
ro‟yhatning har k-elementidan keyin joylashtiring. 
27. 2 ta halqasimon ro‟yhatni galma-galdan har 3-elementidan umumiy bitta 
yangi ro‟yhat hosil qiling. 
28. 2 ta ro‟yhatning bir xil qiymatli elementlaridan yangi halqasimon ro‟yhat 
yarating. 
29. 2 ta ro‟yhatning bir xil qiymatli elementlarini ro‟yhat boshiga o‟tkazing. 
30. 2 ta ro‟yhatning bir xil qiymatli elementlarini ro‟yhat oxiriga 
joylashtiring. 


63 

Yüklə 1,33 Mb.

Dostları ilə paylaş:
1   ...   20   21   22   23   24   25   26   27   ...   49




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin