3-Mavzu: Assotsiativ va tartiblanmagan assotsiativ konteynerlar bo’yicha laboratoriya ishi
Download 366.71 Kb. Pdf ko'rish
|
"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 g‘oyasi: map konteyneri to’plami yaratiladi. map ning insert(pair 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( " " ) 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< " " < 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: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling