Talabasi Qo’ldoshev Ulug’bekning Ma’lumotlar tuzilmasi va algoritmlar fanidan



Download 169,09 Kb.
Sana24.06.2021
Hajmi169,09 Kb.
#100131
Bog'liq
19 Qo’ldoshev Ulug’bek

640-19 talabasi Qo’ldoshev Ulug’bekning

Ma’lumotlar tuzilmasi va algoritmlar fanidan

19-LABORATORIYA ISHI.

MAVZU: Navbatlar.

Ishdan maqsad: Ushbu laboratoriya ishining maqsadi talabalar navbatlar mavjudligini va ularning samaradorliklarini baholashni oʻrganishlari kerak. Shu asosda saralash usullarini qiyosiy tahlil qilishlari, C++ dasturlash tilida fayllar bilan islashni va ularga oid dasturlar tuzishni oʻzlashtirishlari kerak.

Qoʻyilgan masala: Talabalar topshiriq variantiga mos saralash usuli yordamida masalani yechish dasturini yaratish koʻnikmasiga ega boʻlishlari kerak.

Ish tartibi:

• Tajriba ishi nazariy maʼlumotlarini oʻrganish;

• Berilgan topshiriqning algoritmini ishlab chiqish;

• C++ dasturlash muhitida dasturni yaratish;

• Natijalarni tekshirish;

• Hisobotni tayyorlash va topshirish.


Navbat bu FIFO (First In - First Out - “birinchi kelgan – birinchi ketadi”), shunday oʻzgaruvchan uzunlikdagi ketma-ketlik, roʻyhatki, unda tuzilmaga elementlar faqat bir tomondan, yaʼni navbatning oxiridan qoʻshiladi va elementlarni tuzilmadan chiqarish boshqa tomondan, yaʼni navbat boshidan amalga oshiriladi. Navbat ustida bajariladigan asosiy amallar

- yangi elementni qoʻshish,

- yelementni chiqarib tashlash,

- uzunligini aniqlash,

- navbatni tozalash.


Navbatga yangi element kiritilayotganda navbat oxiri koʻrsatkichi koʻrsatayotgan adresga yoziladi va shundan keyin navbat oxiri koʻrsatkichi bittaga oshiriladi. Navbatdan elementni oʻchirishda navbat boshi koʻrsatkichi koʻrsatayotgan adresdagi element oʻchiriladi va shundan keyin bu koʻrsatkichning qiymati bittaga oshiriladi. Navbatga elementlar kiritilganda navbat oxiri koʻrsatkichi shu navbat uchun ajratilgan xotira sohasining oxiriga yetib qoladi. Bunda navbat toʻlgan hisoblanadi.

Agar navbatdan elementlar oʻchiriladigan boʻlsa, navbat boshida boʻsh joy ajratiladi. Vaholanki, navbat oxiri koʻrsatkichi chegaraga yetib qolganligi sababli, navbatga yangi element kiritib boʻlmaydi. Shu sababli navbatda har safar element oʻchirilganda qolgan barcha elementlar bitta oldinga surilishi kerak boʻladi. Natijada navbat oxirida boʻsh joy ochiladi. Bu holatda navbat boshi koʻrsatkichiga xojat qolmaydi. Lekin shuni aytish kerakki, bu yondashuv bir muncha noqulay hisoblanadi. Shuning uchun har safar elementlarni surib oʻtirmaslik uchun navbatni halqasimon shaklda tashkil etamiz. Yaʼni bunda xotirada navbat sohasining oxiriga

yetib borilganda navbat boshiga oʻtib ketiladi. Ushbu holatda navbat boshi va oxiri koʻrsatkichlari xotiradagi navbat sohasining boshini koʻrsatadi. Bu ikkala koʻrsatkichlarning tengligi navbatning boʻshligini anglatadi. Halqasimon navbatda element qoʻshish amali oʻchirish amalidan koʻproq bajarilsa, navbat oxiri koʻrsatkichi navbat boshi koʻrsatkichiga “yetib oladi”. Bu holat navbat toʻlaligini anglatadi. Halqasimon navbatda elementni oʻchirish ikkala koʻrsatkich koʻrsatayotgan bitta adresda amalga oshiriladi. Bunday navbatning uzunligi boshi va oxiri koʻrsatkichlari farqi bilan aniqlanadi.

C++ tilida navbatni statik, yaʼni bir oʻlchamli massiv koʻrinishda amalga oshirishga misol:

Navbat uchun 10 ta joy ajratilgan boʻlsin, navbatni butun sonlardan iborat massiv shaklida ifodalaymiz. Bunda navbat dastlab boʻshligi sababli, navbat oxiri koʻrsatkichi R =0 boʻladi. Navbatga yangi element qoʻshish va navbatdan elementni chiqarib olish algoritmi, navbat boʻshligini va toʻlaligini tekshirish algoritmlari quyidagi dasturda keltirilgan.



#include

using namespace std;

int a[10],R=0,n;//bu yerda n navbatga kiritilishi kerak bo'lgan elementlar soni.

int kiritish(int s){ a[R]=s; R++;

} int chiqarish(){ int t=a[0];

for(int i=0;i

return t;

}

bool isEmpty(){

if(R==0) return true; else return false;

}

bool isFull(){

if(R>=10)return true;else return false;

}

int print(){ int i;

while(i

}

Int main(){ int n,s; cout<<"n=";cin>>n; for(int i=0;i

if(!isFull()){cin>>s; kiritish(s);}

else{cout<<"navbat to'ldi"; n=i;break;}

}

cout<<"\nnavbat elementlari: "; print();

for(int i=0;i

}

cout<<"\nnatijaviy navbat elementlari: "; print();

system("PAUSE");

}


Xulosa: Men Qo’ldoshev Ulug’bekushbu laboratoriya yozishdan maqsadim shu asosda saralash usullarini qiyosiy tahlil qilishlari, C++ dasturlash tilida fayllar bilan islashni va ularga oid dasturlar tuzishni oʻzlashtirishlarni o’randim.


Download 169,09 Kb.

Do'stlaringiz bilan baham:




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