1.1-dastur. Tiplarni taqqoslash1
#include "stdafx.h"
#include
#include
using namespace std;
class myclass {
// . . .
};
int main(){
int i, j;
float f;
myclass ob;
cout << "i oʻzgaruvchi tipi: " << typeid(i).name()<
cout << "f oʻzgaruvchi tipi: " << typeid(f).name()<
cout << "ob oʻzgaruvchi tipi: " << typeid(ob).name()<
if(typeid(i) == typeid(j))
cout << " i va j tiplar bir xil.\n";
if(typeid(i) != typeid(f))
cout << " i va f tiplar bir xil emas.\n";
system("PAUSE");
return 0;
}
|
1.1 – dastur natijasi. Output
|
i oʻzgaruvchi tipi: int
f oʻzgaruvchi tipi: float
ob oʻzgaruvchi tipi: class myclass
i va j tiplar bir xil.
i va f tiplar bir xil emas
|
1.1-dastur tahlili. Dasturda int tipiga oid i va j, float tipida f, myclass tipida ob o‘zgaruvchilari aniqlangan. typeinfo kutubxonasining typeid().name() metodi bilan ularning tiplari aniqlangan. Taqqsolash operatorlari bilan o‘zraguvchilarning tiplari tekshirilgan va natijalar ekranga chiqarilgan. Bu esa tiplar bo‘yicha dastlabki ishlov berish uchun lozim.
1.1-jadval. Type_info sinf aʻzolari va vazifalari
№
|
Funksiya nomi
|
vazifasi
|
1
|
(constructor)
|
Sinfda standart va nusxa konstruktori mavjud emas.
|
2
|
(destructor) [virtual]
|
xavfsiz tayanch sinf uchun pointer orqali obʻyektni o‘chirish mumkin (virtual funksiyasi)
|
3
|
operator=
|
O‘zlashtirish amalidan foydalanib ko‘chirib bo‘lmaydi
|
4
|
operator==
operator!=
|
Obʻyektlar bir xil tipgaligini taqqoslashydi
(public funksiya)
|
5
|
before
|
Joriy tipdagi boshqa type_index obʻyekt tomonidan nusxasi tipini bor yoki yo‘qligini tekshiradi. Obʻyektlar, aniqrog‘i tiplari, amalga oshirilishi belgilangan tartibda tashkil etiladi. (public funksiya)
|
6
|
hash_code
|
Joriy tipga mos keladigan tiplarni qaytaradi
(public funksiya)
|
7
|
name
|
Joriy tipning aniqlangan nomini qaytaradi.
(public funksiya)
|
Typeid operatori polimorf tayanch sinf uchun ko‘rsatkich sifatida qo‘llaniladigan bo‘lsa (eslabtib o‘tamiz, polimorf sinf kamida bitta virtual funksiyani o‘z ichiga olgan sinfga aytiladi), u avtomatik ravishda real obʻyekt tipini qaytaradi va u asossidan olingan sinf tayanch sinf obʻyekt yoki obʻyekt emasligini ham ko‘rsatadi.
3. Berilgan int turidagi to’plam qiymatlarining juftlari 2- to’plamda nechta marta qatnashganligini aniqlovchi va ularni ekranga chiqaruvchi dastur tuzing. Ikkala to’plamdan ham bir xil qiymatli elemetlar o’chirilib Saralangan to’plam hosil qilinsin hamda uning qiymatlari ekranga chiqarilsin.
Dastur kodi:
#include
#include
#include
using namespace std;
int main() {
list list1 = {1, 5, 6, 8, 15, 17, 10, 4, 19};
list list2 = {10, 11, 2, 8, 15, 16, 17, 25, 8};
list list3;
list list4;
list :: iterator it = list1.begin();
list :: iterator iter = list2.begin();
list3 = list1;
list4 = list2;
cout<<"Berilgan to`plam : \n";
for (it = list1.begin(); it != list1.end(); it++) {
cout << *it << " ";
};
cout<<"\n\n2-to`plam : \n";
for (iter = list2.begin(); iter != list2.end(); iter++) {
cout << *iter << " ";
};
cout<<"\n";
for (it = list1.begin(); it != list1.end(); it++) {
int k = *it;
if(k % 2 == 0) {
int c = 0;
for (iter = list2.begin(); iter != list2.end(); iter++) {
int a = *iter;
if(a == k) c++;
}
if(c>=1) cout<<"\nBerilgan to`plamdagi "<
}
};
for (it = list3.begin(); it != list3.end(); it++) {
int k = *it;
list2.remove(k);
}
for (it = list4.begin(); it != list4.end(); it++) {
int k = *it;
list1.remove(k);
}
cout<<"\nSaralangan 1-to`plam : \n";
for (it = list1.begin(); it != list1.end(); it++) {
cout << *it << " ";
};
cout<<"\n\nSaralangan 2-to`plam : \n";
for (iter = list2.begin(); iter != list2.end(); iter++) {
cout << *iter << " ";
};
return 0;
}
Dastur natijasi:
Do'stlaringiz bilan baham: |