O’zbekiston respublikasi aloqa, axborotlashtirish va telekommunikatsiya texnologiyalari davlat qo’mitasi



Yüklə 0,92 Mb.
səhifə17/52
tarix20.10.2022
ölçüsü0,92 Mb.
#65616
1   ...   13   14   15   16   17   18   19   20   ...   52
O’zbekiston respublikasi aloqa, axborotlashtirish va telekommuni

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< ";i++;}
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
}
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


    1. 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:


  1. Chapdan element kiritish.

  2. O’ngdan element kiritish.

  3. Chapdan element chiqarish.

  4. O’ngdan element chiqarish.

  5. Dek bo’shligini tekshirish.

  6. Dek to’laligini tekshirish.

C++ tilida dekni statik ko’rinishda, ya’ni bir o’lchashhamli 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


  1. Dekka nechta element kiritilishi aniqlanadi – n, i=0.

  2. i++; agar i

  3. Agar in/2 bo’lsa, dekning o’ng tomonidan kiritiladi, 2-qadamga o’tish.

  4. 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.

  5. 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.

  6. b[] massiv elementlarini dekka o’ng tomondan kiritamiz.

  7. 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
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<
}
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;
}

Yüklə 0,92 Mb.

Dostları ilə paylaş:
1   ...   13   14   15   16   17   18   19   20   ...   52




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