Muhammad al-xorazmiy nomidagi toshkent axborot texnoligiyalar universiteti qarshi filliali
Download 0.61 Mb.
|
Dasturlash 2 mustaqil ish 2
#include #include #include #include using namespace System; using namespace std; int main() { srand(time(NULL)); set cout<<"Elementlar sonini: "; cin>>n; multiset for (int i = 0; i < n; i++) { int j = rand()%n+n; M.insert(j); j = rand()%n+n; M2.insert(j); 16. } auto k2 = M.begin(); set for (int i = 0; i < n; i++) 20. { 21. s2.insert(*k2); k2++; 22. } cout< for (auto i=M.begin(); i!=M.end(); i++) 25. { 26. cout<<*i<<" "; 27. } cout< cout< for (auto i=M2.begin(); i!=M2.end(); i++) 31. { 32. cout<<*i<<" "; 33. } cout< int soni=0; 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. } if(soni>0)cout<<*i<<" -"< else {cout<<*i<<" - qatnashmagan "< soni = 0; 47. } //cout< auto k = M.begin(); auto l = M2.begin(); for (int i = 0; i < n; i++) 52. { s.insert(*k);k++; s.insert(*l); l++; 55. } cout< cout< for (auto i=s.begin(); i!=s.end(); i++) 59. { 60. cout<<*i<<" "; 61. } getchar(); getchar(); 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 -1 marta - qatnashmagan - qatnashmagan -1 marta -4 marta - qatnashmagan - qatnashmagan 35 -1 marta 37 -1 marta 40 - qatnashmagan -1 marta -1 marta -2 marta - 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 map sinfi Iteratorlar tomonidan ko'rsatilgan elementlar orasidagi diapazonda map ning elementlar sonini ifodalash uchun ishlatilishi mumkin bo'lgan imzolangan butun son. farq_type - bu konteyner iteratorlari yordamida kamaytirish yoki ko'paytirish orqali qaytariladigan tur. differ_type odatda birinchi va oxirgi iteratorlar orasidagi [firs, last] oralig'idagi elementlar sonini ifodalash uchun ishlatiladi. 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. 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 iteratoridan foydalanib, A to’plamga qiymatlar o’zlashtiriladi. Dastur matni: #include "stdafx.h" #include #include #include using namespace System; using namespace std; int main() { map cout<<"Talabalar sonini kiriting: "; cin>>n; cin.ignore(); multimap for (int i = 0; i < n; i++) { string St; int step; cout< - talaba ma'lumotlarini kiriting:"< cout<<"Fam, ismi: "; getline(cin,St); cout<<"Stipendiyasi: "; cin>>step; cin.ignore(); s.insert(pair M.insert(pair 19. } string S; int N; cout<<"Qanday stipendiya oladigan talaba haqida ma'lumot kerak?: "; cin>>N; int k=0; for (auto it = M.begin(); it != M.end(); ++it){ S = it->first; if(S.find(" ") M2.insert(pair 29. } cout<<"So'rov Natijasi:"< for (auto it = M2.begin(); it != M2.end(); ++it){ cout< 33. } getchar(); getchar(); return 0;} Dastur natijasi: Talabalar sonini kiriting: 3 - talaba ma'lumotlarini kiriting: Fam, ismi: Mallayev Oybek Stipendiyasi: 400000 - talaba ma'lumotlarini kiriting: Fam, ismi: Ishniyazov Odil Stipendiyasi: 500000 - talaba ma'lumotlarini kiriting: Fam, ismi: ABdurahmonov Stipendiyasi: 300000 Qanday stipendiya oladigan talaba haqida ma'lumot kerak?: 400000 bor So'rov Natijasi: Mallayev Oybek 400000 4. Tartiblanmagan assotsiativ konteynerlar Tartibga solinmagan assotsiativ konteynerlar tezda qidirish qobiliyatiga ega (buzilgan) ma'lumotlar tuzilmalarini (o'rtacha murakkabligi O (1), eng yomon holatda O (n)) tashkil etadi. unordered_set (C++11) - Noyob kalitlar, xash-kalitlar to'plami. unordered_map(C++11) - Kalit-qiymat juftlari to'plami, to'ldirilgan kalitlar, kalitlar noyobdir. unordered_multiset(C++11) - Kalitlar to'plami, hash-kalitlar. unordered_multimap(C++11) - unordered_set sinfi: Snf shabloni: template< class Key, class Hash = std::hash class Allocator = std::allocator Tartiblanmagan to'plam bu ko'p turdagi noyob obyektlarni o'z ichiga olgan assotsiativ konteynerdir. Qidiruv, qo'shish va o'chirish o'rtacha doimiy vaqt murakkabligiga ega. unordered_set iteratorlari:
unordered_set ning funksiya – a’zolari:
unordered_set ning funksiya – a’zolari
unordered_set ning modifikatorlari:
Hash Table bilan ishlovchi funksiyalar:
Download 0.61 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling