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


Download 366.71 Kb.
Pdf ko'rish
bet4/4
Sana22.04.2023
Hajmi366.71 Kb.
#1378058
1   2   3   4
"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<
(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 

Download 366.71 Kb.

Do'stlaringiz bilan baham:
1   2   3   4




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