Dastur kodi #include using namespace std; int a[10],R=0,n;//bu yerda n stekka kiritilishi kerak bo'lgan elementlar soni. int kiritish(int s){ a[R]=s; R++; } int chiqarish(){ R--; return a[R]; } bool isEmpty(){ if(R==0) return true; else return false; } bool isFull(){ if(R>=10) return true;else return false; } int print(){ int i=0,c[n]; while(!isEmpty()){ c[i]=chiqarish(); cout< for(int j=i-1;j>=0;j--) kiritish(c[j]); } int main(){ int n,s; cout<<"n=";cin>>n; for(int i=0;i if(!isFull()){ cin>>s; kiritish(s);} else{cout<<"stek to'ldi"; n=i;break;} } cout<<"\nstek elementlari: "; print(); int b[n],k=0; for(int i=0;i s=chiqarish(); if(s%2!=0) b[k++]=s; } for(int i=k-1;i>=0;i--) kiritish(b[i]); cout<<"\nnatijaviy stek elementlari: "; print(); system("PAUSE"); } Dasturning bajarilishi natijasi:
n =5 6 7 9 8 11 stek elementlari: 11 8 9 7 6 natijaviy stek elementlari: 11 9 7
2.4. Deklar
Dek so‘zi (DEQ - Double Ended Queue) ingliz tilidan olingan bo‘lib 2 ta chetga ega navbat degan ma’noni bildiradi. Dekning o‘ziga xos xususiyati shuki, unga elementlar har ikkala tomondan – chapdan va o‘ng tomondan kiritilishi va chiqarilishi mumkin (2.3-rasm).
2.3-rasm. Dek tuzilmasi
Dek ustida bajariladigan amallar: Chapdan element kiritish.
O‘ngdan element kiritish.
Chapdan element chiqarish.
O‘ngdan element chiqarish.
Dek bo‘shligini tekshirish.
Dek to‘laligini tekshirish.
C++ tilida dekni statik ko‘rinishda, ya’ni bir o‘lchamli massiv ko‘rinishida amalga oshirishga misol: Berilayotgan butun sonlar ketma-ketligining 1-yarmini dekning chap tomonidan, qolgan yarmini dekning o‘ng tomonidan kiriting. Dekning elementlarini bir safar chapdan, bir safar o‘ngdan juftlikka tekshirib, toq elementlari o‘chirilsin.
Algoritm Dekka nechta element kiritilishi aniqlanadi – n, i=0.
i++; agar i Agar in/2 bo‘lsa, dekning o‘ng tomonidan kiritiladi, 2-qadamga o‘tish.
Agar dek bo‘sh bo‘lmasa, chapdan element chiqarib olamiz. Agar element juft bo‘lsa, b[] massivga joylaymiz. 5-qadamga o‘tiladi. Agar dek bo‘sh bo‘lsa, 6-qadamga o‘tish.
Agar dek bo‘sh bo‘lmasa, o‘ngdan element chiqarib olamiz. Agar element juft bo‘lsa, b[] massivga joylaymiz. 5-qadamga o‘tiladi. Agar dek bo‘sh bo‘lsa, 6-qadamga o‘tish.
b[] massiv elementlarini dekka o‘ng tomondan kiritamiz.
Dek tarkibini ekranga chiqaramiz.
Dastur kodi #include #include using namespace std; int a[10],n,R=0; bool isEmpty(){ if(R==0) return true; else return false; } bool isFull(){ if(R>=10) return true; else return false; } int kirit_left(int s){ if(isFull()){cout<<"\ndek to'ldi";n=R;return EXIT_SUCCESS;} for(int i=R;i>0;i--) a[i]=a[i-1]; a[0]=s;R++; } int olish_left(){ if(isEmpty()){cout<<"\ndek bo'sh";return EXIT_SUCCESS;} int t=a[0]; for(int i=0;i a[i]=a[i+1]; R--; return t; } int kirit_right(int s){ if(isFull()){cout<<"\ndek to'ldi";n=R;return EXIT_SUCCESS;} a[R]=s;R++; } int olish_right(){ if(isEmpty()){cout<<"\ndek bo'sh";return EXIT_SUCCESS;} R--; return a[R]; } int print(){ cout< cout< } int main(int argc, char *argv[]) { int n,s;cout<<"n="; cin>>n; for(int i=0;i if(!isFull()){ cout<<"kirit=";cin>>s; if(i>=n/2) kirit_right(s); else kirit_left(s);} else {cout<<"dek to'ldi\n";break;} } print(); int b[n/2],k=0,c[n/2],p=0; while(!isEmpty()){ int q=olish_left(); if(q%2==0) b[k++]=q; if(isEmpty()) break; int p=olish_right(); if(p%2==0) b[k++]=p; } int i=0; while(i kirit_right(b[i]); i++; } print(); system("PAUSE"); return EXIT_SUCCESS; } Dastur natijasi n=8
kirit=1
kirit=2
kirit=3
kirit=4
kirit=5
kirit=6
kirit=7
kirit=8
dek ele-tlari=4 3 2 1 5 6 7 8
dek ele-tlari=4 8 2 6
TOPSHIRIQLAR
N ta elementdan tashkil topgan navbat yarating va birinchi bilan oxirgi element o’rnini almashtiring.
N ta elementdan tashkil topgan navbat berilgan. Navbatning o’rtadagi elemntini o’chiring.
N ta elementdan tashkil topgan navbat berilgan.navbatning eng kichik elementini toping va bu elelementni 0 bilan almashtiring.
N ta elementdan tashkil topgan navbat berilgan.navbatning eng kichik elementini toping va ushbu elementni o’chiring.
N ta elementdan tashkil topgan stek berilgan. Stekning barcha barcha elelementlari yig’indisini toping.
N ta elementdan tashkil topgan navbat berilgan. Navbatning oxiridagi elementiga teng barcha elementlarni o’chiring.
N ta elementdan tashkil topgan navbat berilgan.navbatning eng katta elementini o’chiring.
N ta elementdan tashkil topgan dek berilgan. Dekning barcha jufta elemtlarini yig’idisini toping.
N ta elementdan tashkil topgan stek berilgan. stekning o’rtadagi elemntini o’chiring.
N ta elementdan tashkil topgan stek berilgan.stekning eng kichik elementini toping va bu elementni 1 bilan almashtiring.
N ta elementdan tashkil topgan navbat berilgan.navbatning eng katta elementini toping va ushbu elementdan keyin 3 sonini kiriting.
N ta elementdan tashkil topgan stek berilgan.stekning eng kichik elementini toping va uni o’chiring.
N ta elementdan tashkil topgan stek berilgan.stekning boshidagi elementga teng barcha elementlarni o’chiring.
N ta elementdan tashkil topgan dek berilgan. Dekning barcha musbat elementlarini yig’indisini toping.
N ta elementdan tashkil topgan navbat berilgan. navbatning barcha toq elementlarini yig’indisini toping.
N ta elementdan tashkil topgan ikkita navbat berilgan. Birinchi navbatning barcha manfiy elementlarini ikkinchi navbatga joylashtiring va ikkinchi navbatning barcha musbat elementlarini birinchi navbatga joylashtiring.
N ta elementdan tashkil topgan ikkita stek berilgan. Birinchi stekning barcha manfiy elementlarini ikkinchi stekga joylashtiring va ikkinchi stekning barcha musbat elementlarini o’chiring.
N ta elementdan tashkil topgan ikkita navbat berilgan. Birinchi navbatning barcha toq elementlarini ikkinchi navbatga joylashtiring va ikkinchi navbatning barcha juft elementlarini birinchi navbatga joylashtiring.
N ta elementdan tashkil topgan stek berilgan.stekning eng kichik elementini toping va bu elementni 5 bilan almashtiring.
N ta elementdan tashkil topgan navbat berilgan.navbatning eng katta elementini toping va ushbu elementdan keyin 8 sonini kiriting.
N ta elementdan tashkil topgan dek berilgan. Dekning barcha musbat elementlarini yig’indisining kvadratini toping .
N ta elementdan tashkil topgan stek berilgan.stekning eng kichik elementini toping va bu elementni 0 bilan almashtiring.
N ta elementdan tashkil topgan navbat berilgan.navbatning eng kichik elementini toping va ushbu elementni o’chiring.
N ta elementdan tashkil topgan stek berilgan. Stekning barcha barcha elelementlari yig’indisinining kvadratini toping.
N ta elementdan tashkil topgan navbat berilgan. Navbatning oxiridagi elementiga teng barcha elementlarni o’chiring.
N ta elementdan tashkil topgan navbat yarating va birinchi bilan oxirgi element o’rnini almashtiring.
N ta elementdan tashkil topgan navbat berilgan. Navbatning o’rtadagi elemntini o’chiring.
N ta elementdan tashkil topgan navbat berilgan. Navbatning barcha toq elementlarini yig’indisinining ikkilanganini toping.
N ta elementdan tashkil topgan stek berilgan.stekning eng kichik elementini toping va bu elementdan keyingi elementni o’chiring.
N ta elementdan tashkil topgan ikkita navbat berilgan. Birinchi navbatning barcha toq elementlarini ikkinchi navbatga joylashtiring .
N ta elementdan tashkil topgan navbat berilgan.navbatning eng kichik elementini toping va undan oldingi elementni o’chiring.
NAMUNA (Amaliyot ishlarini bajarilishiga namuna ) AMALIYOTY ISHI-N Mavzu______________________________________________________________