Muhammad al-xorazmiy nomidagi toshkent axborot texnoligiyalar universiteti qarshi filliali


Download 0.61 Mb.
bet5/10
Sana18.06.2023
Hajmi0.61 Mb.
#1584766
1   2   3   4   5   6   7   8   9   10
Bog'liq
Dasturlash 2 mustaqil ish 2

#include

  • #include

  • #include

  • #include

  • using namespace System;

  • using namespace std;

  • int main()

  • { srand(time(NULL));

  • set s; int n;

  • cout<<"Elementlar sonini: "; cin>>n;

  • multiset M, M2;

  • for (int i = 0; i < n; i++)

  • { int j = rand()%n+n; M.insert(j);

  • j = rand()%n+n; M2.insert(j);

    16. }

    1. auto k2 = M.begin();

    2. set s2;

    3. for (int i = 0; i < n; i++)

    20. {
    21. s2.insert(*k2); k2++;
    22. }

    1. cout<elementlari:"<

    2. for (auto i=M.begin(); i!=M.end(); i++)

    25. {
    26. cout<<*i<<" ";
    27. }

    1. cout<

    2. cout<elementlari:"<

    3. for (auto i=M2.begin(); i!=M2.end(); i++)

    31. {
    32. cout<<*i<<" ";
    33. }

    1. cout< ning elementlari M2 to'plamda qatnashganlari soni:"<

    2. int soni=0;

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

    1. if(soni>0)cout<<*i<<" -"<"<

    2. else {cout<<*i<<" - qatnashmagan "<

    3. soni = 0;

    47. }

    1. //cout<

    2. auto k = M.begin();

    3. auto l = M2.begin();

    4. for (int i = 0; i < n; i++)

    52. {

    1. s.insert(*k);k++;

    2. s.insert(*l); l++;

    55. }

    1. cout<

    2. cout<elementlari:"<

    3. for (auto i=s.begin(); i!=s.end(); i++)

    59. {
    60. cout<<*i<<" ";
    61. }

    1. getchar(); getchar();

    2. 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. -1 marta

    2. - qatnashmagan

    3. - qatnashmagan

    4. -1 marta

    5. -4 marta

    6. - qatnashmagan

    7. - qatnashmagan

    35 -1 marta
    37 -1 marta
    40 - qatnashmagan

    1. -1 marta

    2. -1 marta

    1. -2 marta

    2. - 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 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. { map int> s; int n;

      9. cout<<"Talabalar sonini kiriting: "; cin>>n; cin.ignore();

      10. multimap 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. s.insert(pair int>(St,step));

      18. M.insert(pair int>(St,step));

    19. }

    1. string S;

    2. int N;

    3. cout<<"Qanday stipendiya oladigan talaba haqida ma'lumot kerak?: ";

    4. cin>>N;

    5. int k=0;

    6. for (auto it = M.begin(); it != M.end(); ++it){

    7. S = it->first;

    8. if(S.find(" ") && it->second == N){

    9. M2.insert(pair int>(S,N)); cout<<"bor"<

    29. }

    1. cout<<"So'rov Natijasi:"<

    2. for (auto it = M2.begin(); it != M2.end(); ++it){

    3. cout<first<<" "<>second<

    33. }

    1. getchar(); getchar();

    2. return 0;}

    Dastur natijasi:
    Talabalar sonini kiriting: 3

    1. - talaba ma'lumotlarini kiriting:

    Fam, ismi: Mallayev Oybek Stipendiyasi: 400000

    1. - talaba ma'lumotlarini kiriting:

    Fam, ismi: Ishniyazov Odil Stipendiyasi: 500000

    1. - 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 KeyEqual = std::equal_to,
    class Allocator = std::allocator> class unordered_set;
    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:

    Nomi

    Izoh

    begin, cbegin

    Birinchi elementga iteratorni qaytaradi.

    end, cend

    Iteratorni oxirgi elementga qaytaradi.

    empty

    Konteynerni bo’shlikka tekshirish.

    size

    Konteynerning elementlar sonini qaytaradi.

    max_size

    Konteynerning ruxsat etilgan elementlarning maksimal sonini qaytaradi.



    unordered_set ning funksiya a’zolari:

    Nomi

    Izoh

    at

    Ko'rsatilgan elementga indeks tekshiruvi bilan kirishni ta'minlaydi

    operator[]

    Belgilangan elementga kirishni ta'minlaydi

    front

    Birinchi elementga kirishni ta'minlaydi

    back

    oxirgi elementga kirishni ta'minlaydi

    data (C++11)

    Massivning birinchi haqiqiy elementiga ko'rsatgichni qaytaradi



    unordered_set ning funksiya a’zolari

    Nomi

    Izoh

    get_allocator

    Bog'langan ajratuvchini qaytaradi.

    operator=

    Konteynerdagi qiymatlarni o'rnatadi



    unordered_set ning modifikatorlari:

    Nomi

    Izoh

    clear

    Konteynerni tozalaydi.

    insert

    Konteynerga element qo’shadi.

    emplace

    Elementlarni "joyida" quradi va berilgan pozitsiyadan boshlab ularni joylashtiradi.

    emplace_hint

    Foydalanish joyidagi struktura elementlari.

    erase

    Konteynerdan element ochirish.

    swap

    Tarkibni almashtirish.

    count

    Muayyan kalitga mos keladigan elementlar sonini qaytaradi.

    find

    Ma'lum bir kalitga ega bo'lgan elementni topadi.

    equal_range

    Ma'lum bir kalit uchun elementlar to'plamini qaytaradi.

    bucket_count

    Buketlar sonini qaytaradi.

    max_bucket_count

    Buketlar sonini maksimalini qaytaradi.

    bucket_size

    Aniq buketdagi elementlar soni.

    bucket

    Aniq kalitlar uchun buket qaytarish.



    Hash Table bilan ishlovchi funksiyalar:



    Nomi

    Izoh

    load_factor

    Bir buketdagi elementlarning o'rtacha sonini qaytaradi.

    max_load_factor

    O’rtach elementlar sonini maksimal boshqarish.

    rehash

    Talab qilinganidan kam bo'lmagan holda hesh jadvalini qayta tiklash.

    reserve

    Kamida belgilangan sonlar uchun joy saqlaydi. Bu hash jadvalini tiklaydi.

    hash_function

    Element qiymatlarini xesh qilish uchun ishlatiladigan funktsiya.

    key_eq

    Kalitlarning tengligini tekshirish funktsiyasini qaytaradi.




    Download 0.61 Mb.

    Do'stlaringiz bilan baham:
  • 1   2   3   4   5   6   7   8   9   10




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