3-Mavzu: Assotsiativ va tartiblanmagan assotsiativ konteynerlar bo’yicha amaliyot ishi


Download 0.52 Mb.
Pdf ko'rish
bet2/3
Sana07.05.2023
Hajmi0.52 Mb.
#1440713
1   2   3
Bog'liq
dasturlash 3-kredit

> s; 
int
 n; 
11. cout<<
"Elementlar sonini: "
; cin>>n; 
12. 
multiset
<
int
> M, M2; 
13. 
for
 (
int
 i = 0; i < n; i++) 
14.
int
 j = rand()%n+n; 
M.insert(j);
15. j = rand()%n+n;
M2.insert(j); 
16.
17. 
auto
 k2 = M.begin(); 
18. 
set
<
int
> s2; 
19. 
for
 (
int
 i = 0; i < n; i++) 
20.
21. s2.insert(*k2); k2++; 
22.
23. cout<
"M to'plam elementlari:"
<


24. 
for
 (
auto
 i=M.begin(); i!=M.end(); i++) 
25.
26. cout<<*i<<
" "

27.
28. cout<
29. cout<
"M2 to'plam elementlari:"
<
30. 
for
 (
auto
 i=M2.begin(); i!=M2.end(); i++) 
31.
32. cout<<*i<<
" "

33.
34. cout<
"M1 ning elementlari M2 to'plamda 
qatnashganlari soni:"
<
 
35. 
int
 soni=0; 
36. 
for
 (
auto
 i=s2.begin(); i!=s2.end(); i++) 
37.
38. 
for
 (
auto
 j=M2.begin(); j!=M2.end(); j++) 
39.
40. 
if
(M2.count(*i)){ 
41. 
if
(*i==*j) {soni++; } 
42.
43.
44. 
if
(soni>0)cout<<*i<<
" -"
<
" marta "
<
45. 
else
 {cout<<*i<<
" - qatnashmagan "
<
46. soni = 0; 
47.
48. 
//cout<
 
49. 
auto
 k = M.begin(); 
50. 
auto
 l = M2.begin(); 
51. 
for
 (
int
 i = 0; i < n; i++) 
52.
53. s.insert(*k);k++; 
54. s.insert(*l); l++; 
55.
56. cout<
57. cout<
"Saralangan to'plam elementlari:"
<
58. 
for
 (
auto
 i=s.begin(); i!=s.end(); i++) 
59.
60. cout<<*i<<
" "

61.
62. getchar();
63. 
return
 0; 
64.
Dastur natijasi: 
Elementlar sonini: 25 
M to'plam elementlari: 
25 27 27 27 27 28 29 30 31 31 31 32 33 33 35 35 37 37 40 42 42 43 43 47 48 
M2 to'plam elementlari: 
26 27 30 31 31 31 31 34 35 37 38 39 42 43 45 45 45 46 46 46 46 47 47 49 49 
M1 ning elementlari M2 to'plamda qatnashganlari soni: 


25 - qatnashmagan 
27 -1 marta 
28 - qatnashmagan 
29 - qatnashmagan 
30 -1 marta 
31 -4 marta 
32 - qatnashmagan 
33 - qatnashmagan 
35 -1 marta 
37 -1 marta 
40 - qatnashmagan 
42 -1 marta 
43 -1 marta 
47 -2 marta 
48 - qatnashmagan 
Saralangan to'plam elementlari: 
25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 42 43 45 46 47 48 49 
__________________________________________________________________ 
2- Masala: Telefon classi yaratilsin va obyektlarni set konteyneriga 
joylashtiring. Tartiblash narxlarining o’sish tartibida bo’lsin. Telefonlar haqida 
to’liq ma’lumot chop etilsin. 
Masalani yechish g’oyasi: Telefon classi yaratiladi. Set konteyneri qoidasiga 
ko’ra uning elementlari ma’lum qoida asosida tartiblanishi kerak. Shu sababli 
telefon classi da so’ralgan maydon bo’yicha tartiblash uchun munosabat 
operatorini qayta yuklashga to’g’ri keladi. So’ngra asosiy funksiyada set 
konteyneri yaratilib unga telefon obyektlarimizni joylashtiramiz.
 
Dastur matni: 
#include
 

 
#include
 

 
#include
 

 
#include
 

 
#include
 

 
#include
 

 
using
 
namespace
 std; 
class
 
Telefon

public

string
 nomi, versiyasi, xotirasi; 
 
 
int
 yili, narxi; 
 
 
Telefon(
string
 
nomi

string
 
versiyasi

string
 
xotirasi

int
 
yili

int
 
narxi
){ 


 
 
 
this
->nomi=
nomi

this
->versiyasi=
versiyasi

this
-
>xotirasi=
xotirasi

 
 
 
this
->yili=
yili

this
->narxi=
narxi

 
 

 
 
void
 chop_qil(){ 
 
 
 
cout<
w(5)<
 
 

 
 
 
 
 
bool
 operator<(
const
 
Telefon

right

const
 
 
 

 
 
 
if
(narxi<=
right
.narxi) 
return
 
true
;
 
 
 
else
 
return
 
false

 
 

}; 
void
 show(
Telefon
 
i
){
i
.chop_qil();} 
 
int
 main(){ 
 
Telefon
 t(
"Nokia"
,
"A12"
,
"16Gb"
,2019,800000); 
 
Telefon
 t1(
"Iphone"
,
"9"
,
"64Gb"
,2020,12000000); 
 
Telefon
 t2(
"Samsung"
,
"S9"
,
"32Gb"
,2017,2800000); 
 
set
<
Telefon
>st; 
 
st.insert(t); 
 
st.insert(t1); 
 
st.insert(t2); 
 
for_each(st.begin(),st.end(), show); 
 
 
system(
"pause"
); 

Dastur natijasi: 
 
__________________________________________________________________ 
3.2. map va multimap sinflaridan foydalanib, amaliy dasturlar yaratish 
Ishning maqsadi: C++ dasturlash tilida map va mulmap sinflari va uning 
metodlaridan foydalanish ko’nikmalarini egallsh. 
Masalaning qo’yilishi: map va multimap asosida yaratilgan to’plam 
elementlarini map va mutimap ning maxsus funksiyalari yordamida qayta ishlash. 
1-Masala: Talabalarning haqida (familiya, ismi va stipendiyasi) string va float 
turidagi to’plam berilgan. Familiyasi yoki ismi to’liq yozilganlar va stipendiyasi N 


ga teng bo’lganlaridan 2- to’plamni hosil qiluvchi va ularni ekranga chiqaruvchi 
dastur tuzing.  
Masalani yechish goyasi: map konteyneri to’plami yaratiladi. map ning 
insert(pair('a',10)) iteratoridan foydalanib, A to’plamga qiymatlar 
o’zlashtiriladi.
Dastur matni: 
1. 
#include
 
"stdafx.h"
 
2. 
#include
 

 
3. 
#include

 
4. 
#include

 
5. 
using
 
namespace
 System; 
6. 
using
 
namespace
 std; 
7. 
int
 main() 
8. {
int
 n; 
bool
 t=
false

9. cout<<
"Talabalar sonini kiriting: "
; cin>>n; cin.ignore(); 
10. 
multimap
<
string
,
int
> M, M2; 
11. 
for
 (
int
 i = 0; i < n; i++) 
12.
string
 St;
13. 
int
 step; 
14. cout<
" - talaba ma'lumotlarini kiriting:"
<
15. cout<<
"Fam, ismi: "
; getline(cin,St); 
16. cout<<
"Stipendiyasi: "
; cin>>step; cin.ignore(); 
17. M.insert(
pair
<
string

int
>(St,step));
18.
19. 
string
 S; 
20. 
int
 N;
21. cout<<
"Qanday stipendiya oladigan talaba haqida ma'lumot kerak?:"

22. cin>>N; 
23. 
int
 k=0; 
24. 
for
 (
auto
 it = M.begin(); it != M.end(); ++it){ 
25. S = it->first; 
26. 
if
(S.find(
" "
)second == N){ 
27. M2.insert(
pair
<
string

int
>(S,N));t=true;}
 
28.
29. cout<<
"So'rov Natijasi:"
<
30. 
if
(t){ cout<<
"bor"
<
31. 
for
 (
auto
 it = M2.begin(); it != M2.end(); ++it){ 
32.  cout<first<<
" "
<second<
33.
34.
35. system(
"pause"
); 
36. 
return
 0; 
37. 
}
Dastur natijasi: 
Talabalar sonini kiriting: 3 


1 - talaba ma'lumotlarini kiriting: 
Fam, ismi: Sobirov Sardor 
Stipendiyasi: 400000 
2 - talaba ma'lumotlarini kiriting: 
Fam, ismi: Botirov Xusan 
Stipendiyasi: 500000 
3 - talaba ma'lumotlarini kiriting: 
Fam, ismi: Asadullayev 
Stipendiyasi: 400000 
Qanday stipendiya oladigan talaba haqida ma'lumot kerak?: 400000 
bor 
So'rov Natijasi: 
Sobirov Sardor 400000 
 
3.1. set va multiset sinflaridan foydalanib, amaliy dasturlar yaratish 
Ishning maqsadi: C++ dasturlash tilida set va multiset sinflari va uning 
metodlaridan foydalanish ko’nikmalarini egallsh. 
Masalaning qo’yilishi: 
set va multiset asosida yaratilgan to’plam elementlarini set va mutiset ning 
maxsus funksiyalari yordamida qayta ishlash. 
Amaliyot ishini bajarish bo’yicha variantlar 
Berilgan vazifalarni bajarishda kiruvchi qiymatlar matinli fayldan o’qib 
olinishi kerak. 
1- jadval 

Berilgan int turidagi to’plam qiymatlarining juftlari 2- to’plamda nechta 
marta qatnashganligini aniqlovchi va ularni ekranga chiqaruvchi dastur 
tuzing. Ikkala to’plamdan ham bir xil qiymatli elemetlar o’chirilib 
Saralangan to’plam hosil qilinsin hamda uning qiymatlari ekranga 
chiqarilsin. 

Berilgan int turidagi to’plam qiymatlarining toqlari 2- va 3- to’plamda 
nechta marta qatnashganligini aniqlovchi va ularni ekranga chiqaruvchi 
dastur tuzing. Ikkala to’plamdan ham bir xil qiymatli elemetlar o’chirilib 
Saralangan to’plam hosil qilinsin hamda uning qiymatlari ekranga 


chiqarilsin. 

Berilgan int turidagi to’plam qiymatlarining tublari 2- to’plamda nechta 
marta qatnashganligini aniqlovchi va ularni ekranga chiqaruvchi dastur 
tuzing. Ikkala to’plamdan ham bir xil qiymatli elemetlar o’chirilib 
Saralangan to’plam hosil qilinsin hamda uning qiymatlari ekranga 
chiqarilsin. 

Berilgan float turidagi to’plam qiymatlarining butun(nuqtadan oldin) qismi 
2- to’plamga, kasr(nuqtadan keyin) qismi 3- to’plamga joylashtiruvchi va 
ularni ekranga chiqaruvchi dastur tuzing. Ikkala to’plamdan ham bir xil 
qiymatli elemetlar o’chirilib Saralangan to’plam hosil qilinsin hamda uning 
qiymatlari ekranga chiqarilsin. 

Berilgan float turidagi to’plamning 2 ta elementi yig’indisidan 2- to’plamni, 
ayirmasidan 3- to’plamni hosil qiluvchi va ularni ekranga chiqaruvchi dastur 
tuzing. Ikkala to’plamdan ham bir xil qiymatli elemetlar o’chirilib 
Saralangan to’plam hosil qilinsin hamda uning qiymatlari ekranga 
chiqarilsin. 

Berilgan float turidagi to’plamning 2 ta juft elementi yig’indisidan 2- 
to’plamni, ayirmasidan 3- to’plamni hosil qiluvchi va ularni ekranga 
chiqaruvchi dastur tuzing. Ikkala to’plamdan ham bir xil qiymatli elemetlar 
o’chirilib Saralangan to’plam hosil qilinsin hamda uning qiymatlari ekranga 
chiqarilsin. 

Berilgan string turidagi to’plamning 2 ta elementidan 2- to’plamni, 3 ta 
elementidan 3- to’plamni hosil qiluvchi va ularni ekranga chiqaruvchi dastur 
tuzing. Ikkala to’plamdan ham bir xil qiymatli elemetlar o’chirilib 
Saralangan to’plam hosil qilinsin hamda uning qiymatlari ekranga 
chiqarilsin. 

Berilgan string turidagi to’plamning juft uzinlikka ega bo’lgan elementidan 
2- to’plamni, toq uzinlikdagi elementidan 3- to’plamni hosil qiluvchi va 
ularni ekranga chiqaruvchi dastur tuzing. Ikkala to’plamdan ham bir xil 
qiymatli elemetlar o’chirilib Saralangan to’plam hosil qilinsin hamda uning 
qiymatlari ekranga chiqarilsin. 

Berilgan string turidagi to’plamning 2 ta so’zdan iborat elementidan 2- 
to’plamni, 1 ta so’zdan iborat elementidan 3- to’plamni hosil qiluvchi va 
ularni ekranga chiqaruvchi dastur tuzing. Ikkala to’plamdan ham bir xil 
qiymatli elemetlar o’chirilib Saralangan to’plam hosil qilinsin hamda uning 
qiymatlari ekranga chiqarilsin. 
10 
Berilgan string turidagi to’plamning 1 ta so’zdan iborat elementlarini 
o’chiruvchi va 1 ta so’zdan iborat elementidan 2- to’plamni hosil qiluvchi 
hamda ularni ekranga chiqaruvchi dastur tuzing.
11 
Berilgan string turidagi to’plamning katta harfdan iborat elementlarini 
o’chiruvchi va kichik harfdan iborat elementidan 2- to’plamni hosil qiluvchi 
hamda ularni ekranga chiqaruvchi dastur tuzing. 
12 
Berilgan string turidagi to’plamda katta harfdan va kichik harfdan 
boshlanuvchi elementlari soni aniqlovchi hamda ularni ekranga chiqaruvchi 


dastur tuzing. 
13 
Berilgan string turidagi to’plamning katta harfdan iborat elementlarini 
kichik harfga o’girib, 2- to’plamni va kichik harfdan iborat elementlarini 
katta harfga o’girib, 3- to’plamni hosil qiluvchi hamda ularni ekranga 
chiqaruvchi dastur tuzing. 
14 
Berilgan char turidagi to’plamning 2 ta elementidan 2- to’plamni, 3 ta 
elementidan 3- to’plamni hosil qiluvchi va ularni ekranga chiqaruvchi dastur 
tuzing.
15 
Berilgan char turidagi to’plamning juft uzinlikka ega bo’lgan elementidan 2- 
to’plamni, toq uzinlikdagi elementidan 3- to’plamni hosil qiluvchi va ularni 
ekranga chiqaruvchi dastur tuzing.
16 
Berilgan char turidagi to’plamning 2 ta so’zdan iborat elementidan 2- 
to’plamni, 1 ta so’zdan iborat elementidan 3- to’plamni hosil qiluvchi va 
ularni ekranga chiqaruvchi dastur tuzing.
17 
Berilgan char turidagi to’plamning 1 ta so’zdan iborat elementlarini 
o’chiruvchi va 1 ta so’zdan iborat elementidan 2- to’plamni hosil qiluvchi 
hamda ularni ekranga chiqaruvchi dastur tuzing.
18 
Berilgan char turidagi to’plamning kata harfdan iborat elementlarini 
o’chiruvchi va kichik harfdan iborat elementidan 2- to’plamni hosil qiluvchi 
hamda ularni ekranga chiqaruvchi dastur tuzing. 
19 
Berilgan char turidagi to’plamda kata harfdan va kichik harfdan 
boshlanuvchi elementlari soni aniqlovchi hamda ularni ekranga chiqaruvchi 
dastur tuzing. 
20 
Berilgan char turidagi to’plamning katta harfdan iborat elementlarini kichik 
harfga o’girib, 2- to’plamni va kichik harfdan iborat elementlarini katta 
harfga o’girib, 3- to’plamni hosil qiluvchi hamda ularni ekranga chiqaruvchi 
dastur tuzing. 
21 
Berilgan float turidagi to’plam qiymatlarining juftlari 2-va 3- to’plamda 
nechta marta qatnashganligini aniqlovchi va ularni ekranga chiqaruvchi 
dastur tuzing. Ikkala to’plamdan ham bir xil qiymatli elemetlar o’chirilib 
Saralangan to’plam hosil qilinsin hamda uning qiymatlari ekranga 
chiqarilsin. Berilgan to’plam qiymatlarining juftlari yig’indisi hisoblansin. 
22 
Berilgan float turidagi to’plam qiymatlarining toqlari 2- va 3- to’plamda 
nechta marta qatnashganligini aniqlovchi va ularni ekranga chiqaruvchi 
dastur tuzing. Ikkala to’plamdan ham bir xil qiymatli elemetlar o’chirilib 
Saralangan to’plam hosil qilinsin hamda uning qiymatlari ekranga 
chiqarilsin. Berilgan to’plam qiymatlarining toqlari yig’indisi hisoblansin. 
23 
Berilgan floar turidagi to’plam qiymatlarining tublari 2- to’plamda nechta 
marta qatnashganligini aniqlovchi va ularni ekranga chiqaruvchi dastur 
tuzing. Ikkala to’plamdan ham bir xil qiymatli elemetlar o’chirilib 
Saralangan to’plam hosil qilinsin hamda uning qiymatlari ekranga 
chiqarilsin. Berilgan to’plam qiymatlarining tublari yig’indisi hisoblansin. 
24 
Berilgan float turidagi to’plam qiymatlarining yaxlitlab(o’zidan katta yoki 
teng bo’lgan butun songacha yaxlitlab) 2- to’plamga, ikki to’plam 


ayirmasini(3=1-2) 3- to’plamga joylashtiruvchi va ularni ekranga 
chiqaruvchi dastur tuzing. 
25 
Berilgan float turidagi to’plamning 2 ta elementi o’zidan kichik yoki teng 
bo’lgan butun songacha yaxlitlab yig’indisidan 2- to’plamni, ayirmasidan 
3- to’plamni hosil qiluvchi va ularni ekranga chiqaruvchi dastur tuzing.
26 
Berilgan float turidagi to’plamning 2 ta juft elementi ko’paytmasidan 2- 
to’plamni, bo’linmasidan 3- to’plamni hosil qiluvchi va ularni ekranga 
chiqaruvchi dastur tuzing. Ikkala to’plamdan ham bir xil qiymatli elemetlar 
o’chirilib, saralangan to’plam hosil qilinsin hamda uning qiymatlari ekranga 
chiqarilsin. 
27 
Berilgan float turidagi ikkita to’plam qiymatlarining bo’linmasi 
butun(nuqtadan oldin) qismi 3- to’plamga, kasr(nuqtadan keyin) qismi 4- 
to’plamga joylashtiruvchi va ularni ekranga chiqaruvchi dastur tuzing. 
Ikkala to’plamdan ham bir xil qiymatli elemetlar o’chirilib Saralangan 
to’plam hosil qilinsin hamda uning qiymatlari ekranga chiqarilsin. 
28 
Berilgan string turidagi to’plamda katta harflar va kichik harflar soniga teng 
uzunlikdagi ikkita to’plam hosil qilinsin va tasodifiy sonlar bilan to’ldirilsin. 
Barcha to’plam elementlarini ekranga chiqaruvchi dastur tuzing. 
29 
Berilgan string turidagi to’plamning katta harfdan iborat elementlaridan, 2- 
to’plamni va kichik harfdan iborat elementlaridan, 3- to’plamni hosil 
qiluvchi hamda ularni ekranga chiqaruvchi dastur tuzing. 
30 
Berilgan char turidagi to’plamning kata harflaridan 2- to’plamni, kichik 
elementidan 3- to’plamni hosil qiluvchi va ularni ekranga chiqaruvchi dastur 
tuzing.
31 
Berilgan char turidagi to’plamning juft uzinlikka ega bo’lgan 
elementlarining oxirgi elementini 5 marotaba takrorlab, 2- to’plamni, toq 
uzinlikdagi to’plamning birinchi elementini 4 marotaba takrorlab, 3- 
to’plamni hosil qiluvchi va ularni ekranga chiqaruvchi dastur tuzing.
32 
Berilgan char turidagi to’plamning oxiriga ko’rsatkich qaytaruvchi
to’plamni hosil qiluvchi va ularni ekranga chiqaruvchi dastur tuzing.
33 
Berilgan char turidagi to’plamda berilgan kalitga mos keladigan to’plam 
elementlar sonini aniqlovchi dastur tuzing va to’plamni elementlarini 
ekranga chiqaruvchi dastur tuzing.
34 
Berilgan char turidagi to’plam bo’sh bo’sa, 65-75 gacha qiymat bilan 
to’ldirilsin aks holda berilgan kalitlarga mos qiymat shu to’plamda borligi 
aniqlansin. To’plam elementlarini ekranga chiqarilsin. 
35 
Berilgan char turidagi to’plamning barcha elementlari katta harf bo’sa 
kichikka kichik harf bo’lsa katta hafrlargi o’tkazuvchi va to’plam 
elementlarini ekranga chiqaruvchi dastur tuzing. 

Download 0.52 Mb.

Do'stlaringiz bilan baham:
1   2   3




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling