Masala: Berilgan int turidagi to’plam qiymatlari 2- to’plamda nechta marta qatnashganligini aniqlovchi va ularni ekranga chiqaruvchi dastur tuzing. Ikkala to’plamdan ham bir xil qiymatli elementlar o’chirilib Saralangan to’plam hosil qilinsin hamda uning qiymatlari ekranga chiqarilsin.
Masalaniyechish g‘oyasi: multiset konteyneri to’plami yaratiladi. set ning insert() iteratoridan foydalanib, M1 va M2 (multiset) to’plamga qiymatlar o’zlashtiriladi. s (set)to’plamga esa M1 va M2 to’plam qiymatlarini barchasi saralangan va takrorlanmagan holda yoziladi.
Dastur matni: #include #include #include #include using namespace std;
int main(){
set s; int n1,n2;
cout<<"1-to'plam elementlar sonini kiriting: "; cin>>n1;
multiset M1, M2;
cout<<"Birinchi to'plam elementlarini kiriting:\n";
for (int i = 0; i < n1; i++){
int j ; cin>>j; M1.insert(j);
}
cout<<"1-to'plam elementlar sonini kiriting: "; cin>>n2;
cout<<"Ikkinchi to'plam elementlarini kiriting:\n";
for (int i = 0; i < n2; i++){
int j ; cin>>j; M2.insert(j);
}
multiset :: iterator i,j,k1,k2;
cout<for ( i=M1.begin(); i!=M1.end(); i++){
cout<<*i<<" ";
}
cout<cout<for ( i=M2.begin(); i!=M2.end(); i++){
cout<<*i<<" ";
}
k1 = M1.begin();
set s2;
for (int i = 0; i < n1; i++){
s2.insert(*k1); k1++;
}
cout<int soni=0;
for ( i=s2.begin(); i!=s2.end(); i++){
for ( j=M2.begin(); j!=M2.end(); j++){
if(M2.count(*i)){
if(*i==*j) {soni++; }
}
}
if(soni>0)cout<<*i<<" -"<else {cout<<*i<<" - qatnashmagan "<soni = 0;
}
//cout<k1 = M1.begin();
k2 = M2.begin();
for (int i = 0; i < n1; i++){
s.insert(*k1);k1++;
s.insert(*k2); k2++;
}
cout<set ::iterator itr;
cout<for ( itr=s.begin(); itr!=s.end(); itr++){
cout<<*itr<<" ";
}
}
//4-tajriba 1-namuna set va multiset
Dastur natijasi: Elementlar sonini: 5
Birinchi to'plam elementlarini kiriting:
2 4 3 6 5
Ikkinchi to'plam elementlarini kiriting:
2 6 8 1 9
M1 to'plam elementlari:
2 3 4 5 6
M2 to'plam elementlari:
1 2 6 8 9
M1 ning elementlari M2 to'plamda qatnashganlari soni:
2 -1 marta
3 - qatnashmagan
4 - qatnashmagan
5 - qatnashmagan
6 -1 marta
Saralangan to'plam elementlari:
1 2 3 4 5 6 8 9 __________________________________________________________________
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;