Toshkent axborot texnalogiyalari universiteti
Urganch filiali “Telekommunikatsiya texnalogiyalari”
fakulteti 942-21-guruh talabasi
Ruzmatov Suxrobning Dasturlash II
fanidan labaratoriya
topshirigi
Topshiruvchi: Ruzmatov Suxrob ______________
Qabul qiluvchi: Ibragimov Muhiddin ______________
5-LABORATORIYA ISHI
Mavzu:Konteynerlar adapterlari.Konteynerlar bilan ishlash
algoritmlari
Ishning maqsadi: Ushbu laboratoriyada konteyner adapterlarini o’ranish uchun misoillar beilgan. Misollarni konteyner adapterlarning elementlari bo’lgan setek, queue va priority_queue tuzilmalaridan foydalangan holda echish kerak.
NAZARIY QISM
C++ standart kutubxonasida konteyner adapterlarining uch turi aniqlangan:
stack,
navbat(queue);
priority_queue.
Har biri standart ma'lumotlar tuzilishi uchun aniq boshqariladigan interfeysni ta'minlash uchun ba'zi bazaviy konteynerlar sinfining funktsional imkoniyatlarini cheklaydi. Stek deb shunday strukturaga aytiladiki, stekka kelib tushgan oxirgi elementga birinchi bo’lib xizmat ko’rsatiladi va stekdan chiqariladi. Mazkur ko’rinishdagi xizmat ko’rsatishni LIFO (Last input-First output, ya’ni oxirgi kelgan – birinchi ketadi) nomlash qabul qilingan. Stek bir tomondan ochiq bo’ladi.
Stekni amalga oshirish (sonlarni)
Struktura-stek:
const MAXSIZE = 100;
struct Stack {
char data[MAXSIZE]; // 100 ta simvolli stek
int size; // elementlar soni
};
Element qo’shish:
int Push ( Stack &S, char x )
{
if ( S.size == MAXSIZE ) return 0;
S.data[S.size] = x;
S.size ++;
return 1;
}
Boshidan elementni o’chirish:
char Pop ( Stack &S )
{
if ( S.size == 0 ) return char(255);
S.size --;
return S.data[S.size];
}
Bo’shmi yoki yo’q?
int isEmpty ( Stack &S )
{
return (S.size == 0);
}
que sinfi
Old va orqa elementlarga kirishni cheklab qo'yadigan ba'zi bir konteyner turi uchun ishlashni cheklashni ta'minlaydigan shablon konteyner adapteri sinfidir. Elementlar orqa tomondan qo'shilishi yoki old tomondan olib tashlanishi mumkin va elementlarni navbatning oxirida tekshirish mumkin.
Sintaksisi:
template > class queue
Que - navbat
Biz navbat bilan ko’p joylarda duch kelamiz: magazinda, o’qishda, ishda va hokazo. Odatda biz unga e’tibor bermaymiz. Dasturiy tizimlarda ham bu navbat tushunchasi ishlatiladi.
Masalan, hujjatni chop etish uchun printerga jo’natsak, u navbatga turadi.
Navbat – chiziqli ma’lumotlar strukturasi bo’lib, elementni faqat
navbat oxiridan kiritish (navbat oxiri), elementni o’chirish esa faqat
navbat boshqa oxiridan amalga oshiriladi (navbat boshi).
FIFO = First In – First Out
«Birinchi kelgan, birinchi ketadi».
Navbat ustida amallar:
Navbat oxiridan element qo’shish (PushTail = oxiridan kiritish);
Navbat boshidan elementni o’chirish (Pop).
8.Berilgan sonlar ketma-ketligidatoq qiymatli elementlarini o’rtacha qiymati hisoblansin.
#include
#include
using namespace std;
stack a;
int main()
{
int n,k;
cin>>n;
for(int i=0; i {
cin>>k;
a.push(k);
}
while(!a.empty())
{
if(a.top()%2==1){
cout< }
a.pop(); } }
Do'stlaringiz bilan baham: |