Telekommunikatsiya texnalogiyalari



Download 418,72 Kb.
Sana13.09.2022
Hajmi418,72 Kb.
#848697





Toshkent axborot texnalogiyalari universiteti
Urganch filiali “Telekommunikatsiya texnalogiyalari”
fakulteti 942-21-guruh talabasi
Kadamjonov Muxammadali Dasturlash II
fanidan labaratoriya
topshirigi
Topshiruvchi: Kadamjonov Muxammadali ______________
Qabul qiluvchi: Ibragimov Muhiddin ______________


1-tajriba ishi
Mavzu:Tiplarni dinamik tarzda aniqlash. Tiplarni almashtirish operatorlari
Ishdan maqsad: C++ dasturlash tilida tiplarni dinamik tarzda aniqlash va almashtirish operatorlarini o’rganish.
Nazariy qism
Operator dynamic_cast
Operator dynamic_cast dastur davomida polimorf turlarini olib kelish jarayonini amalga oshiradi.
Ehtimol, yangi operatorlarning eng muhimi dynamic_cast turlarini dinamik ravishda olib kelish operatori. Dasturni amalga oshirish vaqtida u tavsiya etilgan operatsiyaning haqiqiyligini tekshiradi. Agar uning chaqiruvi vaqtida berilgan operatsiya qabul qilinishi mumkin bo'lmasa, turlarni olib tashlash amalga oshirilmaydi. Dynamic_cast operatorining umumiy shakli quyidagicha.
dynamic_cast (expr)
Bu erda type elementi ushbu operatsiyani bajarish maqsadi bo'lgan yangi turni anglatadi va expr elementi bu yangi turga olib keladigan ifodasidir. Turi bir ko'rsatgich yoki link bilan taqdim etilishi kerak, va ifoda expr bir pointer yoki havola berilishi kerak. Shunday qilib, dynamic_cast operatori bir turdagi markerni boshqa ko'rsatgichga aylantirish yoki bir turdagi havolani boshqasiga havola qilish uchun ishlatilishi mumkin.

Bu operator asosan polimorf turlari orasida turi olib operatsiyalar dinamik bajarish uchun ishlatiladi. Misol uchun, agar polimorf sinf b va D berilgan bo'lsa, va sinf D sinf b olingan, keyin operator yordamida dynamic_cast har doim markerni aylantirish mumkin D* a pointer uchun*, asosiy sinf uchun pointer har doim sinf ob'ektini ko'rsatish uchun foydalanish mumkin, chunki, asosiy olingan. Biroq, operator dynamic_cast a pointer aylantirish mumkin * a pointer d * faqat holda, manzil ob'ekt, albatta, sinf ob'ekti D bo'lsa. Va, umuman, operator dynamic_cast faqat sharti bilan muvaffaqiyatli amalga oshiriladi, agar ruxsat polimorf haydash turlari bo'lsa, t. e. a pointer bo'lsa (yoki link), yangi turiga gijgijlash, ishora mumkin (yoki mos yozuvlar) bu yangi turdagi ob'ektga yoki ob'ekt, undan olingan. Aks holda, t. u. agar berilgan turdagi operatsiyalar bajarilmasa, dynamic_cast operatorining harakati natijasi nolga teng deb hisoblanadi, agar bu operatsiyada ko'rsatgichlar ishtirok etsa. (Agar ushbu operatsiyani bajarishga urinish muvaffaqiyatsiz bo'lsa, unda bog'lanishlar mavjud bo'lsa, bad_cast tipidagi istisno hosil bo'ladi.)


11.Eshik va deraza class larini yarating va ularni bog’lovchi funksiyalar yarating.


#include

using namespace std;


namespace yangi_nomlar_fazosi


{
class Eshik
{
protected:
int razmeri;
string materiali,rangi;

public:
Eshik() {}


Eshik(int razmeri, string materiali,string rangi)
{
this->razmeri = razmeri;
this->materiali = materiali;
this->rangi=rangi;
}
static void qidirish(Eshik *massiv, int n, string mat)
{
for (int i = 0; i < n; i++)
{
if (massiv[i].materiali == mat)
massiv[i].print();
}
}
static void rang (Eshik *massiv,int n,string rang)
{
for(int i=0; i{
if (massiv[i].rangi == rang)
cin >> n;
Eshik *eshiklar;
eshiklar = new Eshik[n];
if (n)
cout << "\nEshiklar haqida malumot kiritish";
for (int i = 0; i < n; i++)
{
int razmeri;
string materiali,rangi;
cout << "\nEshikning razmeri: ";
cin >> razmeri;
cout << "Eshikningning materiali: ";
cin >> materiali;
cout<<"Eshikning rangi: ";
cin>>rangi;
eshiklar[i] = Eshik(razmeri, materiali,rangi);
}
cout << "\nEshiklarnini saralash, razmeri bo'yicha:\n";
eshiklar[0].saralash(eshiklar, n);
for (int i = 0; i < n; i++)
{
eshiklar[i].print();
}
cout << "\nQidirish: \nMaterialni kiriting: ";
string man;
cin >> man;
eshiklar[0].qidirish(eshiklar, n, man);

cout << "Nechta deraza buyurma bermoqchisiz?\nn = ";


cin >> m;
Deraza *derazalar;
derazalar = new Deraza[m];
if (m)
cout << "\nDerazalar haqida ma'lumotlarni kiritish:\n\n";
for (int i = 0; i < m; i++)
{
int razmeri;
string materiali,rangi;
cout << "Derazaing razmeri: ";
cin >> razmeri;
cout << "Derazaning materiali: ";
cin >> materiali;
derazalar[i] = Deraza(razmeri,materiali,rangi);
}
cout << "\nDerazalarni saralash, razmeri bo'yicha:\n";
derazalar[0].saralash(derazalar, m);

for (int i = 0; i < m; i++)


{
derazalar[i].print();
}
cout << "\nQidirish: Materialni kiriting: ";
cin >> man;
derazalar[0].qidirish(derazalar, m, man);
}




Download 418,72 Kb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2025
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish